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..8674dd7
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.statemachine.aggregator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/epl-v10.html b/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/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/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..2ef6db2
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,36 @@
+<?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:                                                          -->
+<!--# 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.abstractstatemachine</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.osgi.hybrid.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.preferences</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.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.basic</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datainterchange</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.dependency>org.eclipse.osbp.xtext.report</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.statemachine.feature/.project b/org.eclipse.osbp.xtext.statemachine.feature/.project
new file mode 100644
index 0000000..c8135b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.statemachine.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.statemachine.feature/LICENSE.txt b/org.eclipse.osbp.xtext.statemachine.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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.statemachine.feature/build.properties b/org.eclipse.osbp.xtext.statemachine.feature/build.properties
new file mode 100644
index 0000000..0ea4044
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/build.properties
@@ -0,0 +1,10 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               notice.html,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = license.html,\
+               LICENSE.txt,\
+               notice.html,\
+               epl-v10.html			   
diff --git a/org.eclipse.osbp.xtext.statemachine.feature/epl-v10.html b/org.eclipse.osbp.xtext.statemachine.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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.statemachine.feature/feature.properties b/org.eclipse.osbp.xtext.statemachine.feature/feature.properties
new file mode 100644
index 0000000..937c8f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/feature.properties
@@ -0,0 +1,172 @@
+#=======================================================================
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+# Loetz GmbH&Co.KG - initial API and implementation 
+#=======================================================================
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName =OSBP xtext.statemachine 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the OSBP xtext.statemachine bundle.
+
+# "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\
+Contributors:\n\
+    Loetz GmbH&amp;Co.KG - initial API and basis\n\
+
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.statemachine.feature/feature.xml b/org.eclipse.osbp.xtext.statemachine.feature/feature.xml
new file mode 100644
index 0000000..fcb3aee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/feature.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+        id="org.eclipse.osbp.xtext.statemachine.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.statemachine"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.statemachine.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+        
+</feature>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine.feature/license.html b/org.eclipse.osbp.xtext.statemachine.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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.statemachine.feature/notice.html b/org.eclipse.osbp.xtext.statemachine.feature/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/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.statemachine.feature/pom.xml b/org.eclipse.osbp.xtext.statemachine.feature/pom.xml
new file mode 100644
index 0000000..a0c69fc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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:
+# 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.statemachine</groupId>
+        <artifactId>org.eclipse.osbp.xtext.statemachine.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.statemachine.feature</artifactId>
+    <packaging>eclipse-feature</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.eclipse.tycho.extras</groupId>
+                <artifactId>tycho-source-feature-plugin</artifactId>
+                <version>${tychoExtrasVersion}</version>
+                <executions>
+                    <execution>
+                        <id>source-feature</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>source-feature</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <labelSuffix> (source)</labelSuffix>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+                <groupId>org.eclipse.tycho</groupId>
+                <artifactId>tycho-p2-plugin</artifactId>
+                <version>${tycho-version}</version>
+                <executions>
+                    <execution>
+                        <id>attached-p2-metadata</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>p2-metadata</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.osbp.xtext.statemachine</groupId>
+            <artifactId>org.eclipse.osbp.xtext.statemachine</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.osbp.xtext.statemachine</groupId>
+            <artifactId>org.eclipse.osbp.xtext.statemachine.ui</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.statemachine.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.statemachine.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine.feature/src/overview.html b/org.eclipse.osbp.xtext.statemachine.feature/src/overview.html
new file mode 100644
index 0000000..7bc7d2e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.feature/src/overview.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP xtext.statemachine</title>
+</head>
+<body>
+<p>The <strong>OSBP&nbsp;xtext.statemachine</strong> provides bundles for the OSBP xtext.statemachine functionality.</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/.project b/org.eclipse.osbp.xtext.statemachine.tests/.project
new file mode 100644
index 0000000..c987c3e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.statemachine.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.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>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.statemachine.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..aba4454
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.statemachine.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.statemachine.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.xtext.statemachine,
+ org.eclipse.osbp.xtext.statemachine.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4,
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ com.google.inject;bundle-version="3.0.0"
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.statemachine
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/build.properties b/org.eclipse.osbp.xtext.statemachine.tests/build.properties
new file mode 100644
index 0000000..c22eebe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/org.eclipse.osbp.xtext.statemachine.tests.launch b/org.eclipse.osbp.xtext.statemachine.tests/org.eclipse.osbp.xtext.statemachine.tests.launch
new file mode 100644
index 0000000..ccbc54b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/org.eclipse.osbp.xtext.statemachine.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.statemachine.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.statemachine.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.statemachine.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/pom.xml b/org.eclipse.osbp.xtext.statemachine.tests/pom.xml
new file mode 100644
index 0000000..1d71efd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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>
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.statemachine</groupId>
+		<artifactId>org.eclipse.osbp.xtext.statemachine.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.xtext.statemachine.tests</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLInjectorProvider.java b/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLInjectorProvider.java
new file mode 100644
index 0000000..a373707
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLInjectorProvider.java
@@ -0,0 +1,55 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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 StatemachineDSLInjectorProvider 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 StatemachineDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLUiInjectorProvider.java b/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLUiInjectorProvider.java
new file mode 100644
index 0000000..6a412d0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.tests/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLUiInjectorProvider.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class StatemachineDSLUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.eclipse.osbp.xtext.statemachine.ui.internal.StatemachineDSLActivator.getInstance().getInjector("org.eclipse.osbp.xtext.statemachine.StatemachineDSL");
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/.project b/org.eclipse.osbp.xtext.statemachine.ui/.project
new file mode 100644
index 0000000..8eace26
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.statemachine.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.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.statemachine.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.statemachine.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cb81763
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.statemachine.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.statemachine.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.xtext.statemachine;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.eclipse.xtext.xbase.lib,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare,
+ org.eclipse.xtext.xbase.ui,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi;bundle-version="0.9.0",
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="0.9.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.statemachine.ui.quickfix,
+ org.eclipse.osbp.xtext.statemachine.ui.contentassist,
+ org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr,
+ org.eclipse.osbp.xtext.statemachine.ui.internal
+Bundle-Activator: org.eclipse.osbp.xtext.statemachine.ui.internal.StatemachineDSLActivator
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/build.properties b/org.eclipse.osbp.xtext.statemachine.ui/build.properties
new file mode 100644
index 0000000..484d095
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/build.properties
@@ -0,0 +1,8 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               i18n/
+
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/i18n/I18N.properties b/org.eclipse.osbp.xtext.statemachine.ui/i18n/I18N.properties
new file mode 100644
index 0000000..b30d39c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/i18n/I18N.properties
@@ -0,0 +1,686 @@
+#
+#Mon Mar 20 13:51:29 CET 2017
+org.eclipse.osbp.xtext.statemachine.InternalType=
+org.eclipse.osbp.xtext.statemachine.InternalType.NONE=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Boolean=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Date=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.DateTime=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Decimal=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Float=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Integer=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Long=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.String=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.lang.Time=
+org.eclipse.osbp.xtext.statemachine.InternalType.java.util.List=
+org.eclipse.osbp.xtext.statemachine.QualifiedName=
+org.eclipse.osbp.xtext.statemachine.SINT=
+org.eclipse.osbp.xtext.statemachine.SignedNumber=
+org.eclipse.osbp.xtext.statemachine.Statemachine=
+org.eclipse.osbp.xtext.statemachine.Statemachine.actions=
+org.eclipse.osbp.xtext.statemachine.Statemachine.control-object=
+org.eclipse.osbp.xtext.statemachine.Statemachine.controls=
+org.eclipse.osbp.xtext.statemachine.Statemachine.described\ by=
+org.eclipse.osbp.xtext.statemachine.Statemachine.events=
+org.eclipse.osbp.xtext.statemachine.Statemachine.functiongroup=
+org.eclipse.osbp.xtext.statemachine.Statemachine.guards=
+org.eclipse.osbp.xtext.statemachine.Statemachine.initialEvent=
+org.eclipse.osbp.xtext.statemachine.Statemachine.initialState=
+org.eclipse.osbp.xtext.statemachine.Statemachine.statemachine=
+org.eclipse.osbp.xtext.statemachine.Statemachine.states=
+org.eclipse.osbp.xtext.statemachine.StatemachineAction=
+org.eclipse.osbp.xtext.statemachine.StatemachineAction.action=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButton=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButton.baction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButton.caption=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButton.image=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption.caption=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage.image=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition.transition=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition.when=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTO=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTO.daction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTO.find=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTO.in=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind.attribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind.find=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind.in=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind.search=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField.faction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField.get=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField.invisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField.set=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionField.visible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear.clear=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear.dummy=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet.get=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGetMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGetMore.get=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldInvisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldInvisible.invisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke.keystroke=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove.back=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove.remove=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet.as=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet.set=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDouble=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDoubleMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute.dto=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttributeMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttributeMore.dto=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate.evaluate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluateMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceInteger=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceInteger.integer=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceIntegerMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumberMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceStringMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate.translate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslateMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslateMore.translate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldVisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldVisible.visible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible.invisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible.visible=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTResponse=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTResponse.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTResponse.paymentResponse=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTStatus=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTStatus.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTStatus.paymentStatus=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTTransaction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTTransaction.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPTTransaction.paymentTransaction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheral=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheral.paction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate.blinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear.clear=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear.clearDevice=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.column=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.createWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.height=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.row=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.width=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.windowHeight=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow.windowWidth=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType.cursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow.destroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness.deviceBrightness=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceCashDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceCashDrawer.openDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.blinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.clear=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.column=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.createWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.cursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.destroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.deviceBrightness=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.displayBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.displayText=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.displayTextAt=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.height=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.interCharacterWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.marqueeFormat=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.marqueeRepeatWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.marqueeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.marqueeUnitWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.row=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.width=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.windowHeight=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceLineDisplay.windowWidth=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.barcodeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.data=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.name=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.printBarcode=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.printBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.printCut=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.printNormal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.registerBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDevicePOSPrinter.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap.displayBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText.displayText=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.column=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.displayTextAt=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.row=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait.interCharacterWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat.marqueeFormat=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait.marqueeRepeatWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType.marqueeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait.marqueeUnitWait=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer.openDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge.paymentAcknowledge=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization.amount=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization.ofAmount=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization.onSuccess=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization.paymentAuthorization=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTBalanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTBalanceRequest.balanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose.closePT=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose.closePaymentTerminal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose.paymentClose=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen.host=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen.openPT=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen.openPaymentTerminal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen.paymentOpen=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen.port=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTPrepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTPrepaidTopUp.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTPrepaidTopUp.prepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration.configuration=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration.onSuccess=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration.password=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration.paymentRegistration=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration.withPassword=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse.paymentResponse=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.ofReceipt=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.paymentReversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.receipt=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.reversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal.withPassword=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTStatus=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTStatus.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTStatus.paymentStatus=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTTransaction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTTransaction.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTTransaction.paymentTransaction=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceBalanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceBalanceRequest.balanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceClose=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceClose.closePaymentDevice=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceOpen=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceOpen.openPaymentDevice=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePayment=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePayment.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePayment.payment=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePrepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePrepaidTopUp.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDevicePrepaidTopUp.prepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceReversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceReversal.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentDeviceReversal.reversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalAuthorization=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalAuthorization.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalAuthorization.paymentAuthorization=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalBalanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalBalanceRequest.balanceRequest=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalClose=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalClose.closePaymentTerminal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalOpen=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalOpen.host=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalOpen.openPaymentTerminal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalOpen.port=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPayment=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPayment.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPayment.payment=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPrepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPrepaidTopUp.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalPrepaidTopUp.prepaidTopUp=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalRegistration=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalRegistration.password=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalRegistration.paymentRegistration=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalReversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalReversal.of=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPaymentTerminalReversal.reversal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode.barcodeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode.data=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode.printBarcode=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap.printBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut.printCut=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal.printNormal=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal.text=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap.name=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap.registerBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport.filter=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport.printReport=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll.for=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll.scroll=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler.schedule=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionStateTransition=
+org.eclipse.osbp.xtext.statemachine.StatemachineActionStateTransition.transition=
+org.eclipse.osbp.xtext.statemachine.StatemachineAttributeBase=
+org.eclipse.osbp.xtext.statemachine.StatemachineButtonActionEnum=
+org.eclipse.osbp.xtext.statemachine.StatemachineButtonActionEnum.Caption=
+org.eclipse.osbp.xtext.statemachine.StatemachineButtonActionEnum.Image=
+org.eclipse.osbp.xtext.statemachine.StatemachineControl=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButton=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButton.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButton.keypad=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute.button=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute.image=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity.id=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard.key=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType.identity=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType.keyboard=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType.trigger=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlClass=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlClass.Button=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlClass.Data=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlClass.Peripheral=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlClass.Scheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO.dataProvider=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute.dto=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDevice=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlDevice.device=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlField=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlField.fields=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute.field=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute.primitive=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldElement=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout.layout=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObject=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObject.class=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObject.control=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute.attribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute.image=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectAttribute.type\==
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectDTOAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectDTOAttribute.dto=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectDTOAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectPrimitiveAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectPrimitiveAttribute.image=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectPrimitiveAttribute.primitive=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectPrimitiveAttribute.send=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectPrimitiveAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectSchedulerAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectSchedulerAttribute.delay=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectSchedulerAttribute.scheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlObjectSchedulerAttribute.send=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral.peripheral=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlPrimitiveAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlPrimitiveAttribute.primitive=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlPrimitiveAttribute.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler.scheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute.delay=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute.scheduler=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute.send=
+org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility=
+org.eclipse.osbp.xtext.statemachine.StatemachineDTOActionEnum=
+org.eclipse.osbp.xtext.statemachine.StatemachineDTOActionEnum.Find=
+org.eclipse.osbp.xtext.statemachine.StatemachineDTOType=
+org.eclipse.osbp.xtext.statemachine.StatemachineDtoType=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.IPAdress=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.browserLocale=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getBrowserLocale=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getIPAddress=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getNow=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getSceenWidth=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getScreenHeight=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getTrigger=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUser=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserAgentInfo=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserEmail=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserName=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserPassword=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserPosition=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.getUserPrintService=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.ipAdress=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.isHTTPS=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.isHttps=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.isTouchDevice=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.now=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.printReport=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.sceenWidth=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.screenHeight=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.user=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType.userAgentInfo=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvent=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvent.event=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvent.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineEvent.send=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Append=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Clear=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Enable=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Get=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Remove=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldActionEnum.Set=
+org.eclipse.osbp.xtext.statemachine.StatemachineFieldType=
+org.eclipse.osbp.xtext.statemachine.StatemachineFunction=
+org.eclipse.osbp.xtext.statemachine.StatemachineFunction.function=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard.caption=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard.description=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard.guard=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard.onFail=
+org.eclipse.osbp.xtext.statemachine.StatemachineGuard.type=
+org.eclipse.osbp.xtext.statemachine.StatemachineImport=
+org.eclipse.osbp.xtext.statemachine.StatemachineImport.import=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.Boolean=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.Date=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.DateTime=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.Double=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.Integer=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.Long=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.NONE=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.String=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.SuggestText=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.YSuggestTextFieldEvents=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Boolean=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Date=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.DateTime=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Decimal=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Double=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Float=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Integer=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Long=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.String=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.lang.Time=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.java.util.List=
+org.eclipse.osbp.xtext.statemachine.StatemachineInternalType.org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextFieldEvents=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.blink=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.block=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.fixed=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.halfblock=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.none=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.other=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.reverse=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType.underline=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat.place=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat.walk=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.down=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.init=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.left=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.none=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.right=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType.up=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType.down=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType.left=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType.right=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType.up=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType.blink=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType.blink\ reverse=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType.blinkreverse=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType.normal=
+org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType.reverse=
+org.eclipse.osbp.xtext.statemachine.StatemachineModel=
+org.eclipse.osbp.xtext.statemachine.StatemachineObjectType=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperation=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperation.operation=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperation.with=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperationMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperationMore.operation=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter.parameter=
+org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameterMore=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.aztec=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.code128=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.code128_parsed=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.code39=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.code93=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.codeabar=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.datamatrix=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ean128=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ean13=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ean13_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ean8=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ean8_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.gs1databar=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.gs1databar_e=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.gs1databar_e_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.gs1databar_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.itf=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.jan13=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.jan8=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.maxicode=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.ocrb=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.orca=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.pdf417=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.qrcode=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.tf=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upca=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upca_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcb=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcd1=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcd2=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcd3=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcd4=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upcd5=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.upce_s=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.updf417=
+org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType.uqrcode=
+org.eclipse.osbp.xtext.statemachine.StatemachinePackage=
+org.eclipse.osbp.xtext.statemachine.StatemachinePackage.package=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionBlinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionBlinkRate.blinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionClear=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionClear.clear=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.column=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.createWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.height=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.row=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.width=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.windowHeight=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCreateWindow.windowWidth=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionCursorType.cursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionDestroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionDestroyWindow.destroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.BlinkRate=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.ClearDisplay=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.CreateWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.CursorType=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.DestroyWindow=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.DeviceBrightness=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.DisplayBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.DisplayLine=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.DisplayTextAt=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.InterCharacterWait=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.MarqueeFormat=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.MarqueeRepeatWait=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.MarqueeType=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.MarqueeUnitWait=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.OpenDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.PrintBarcode=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.PrintBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.PrintCut=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.PrintNormal=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.RegisterBitmap=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralActionEnum.Scroll=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer.cashDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceEnum=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceEnum.CashDrawer=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceEnum.LineDisplay=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceEnum.PosPrinter=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay.lineDisplay=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter.posPrinter=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT.payment=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePayment=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePayment.payment=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePaymentTerminal=
+org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePaymentTerminal.payment=
+org.eclipse.osbp.xtext.statemachine.StatemachinePrimitiveType=
+org.eclipse.osbp.xtext.statemachine.StatemachineQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.statemachine.StatemachineSearchAttribute=
+org.eclipse.osbp.xtext.statemachine.StatemachineSimpleType=
+org.eclipse.osbp.xtext.statemachine.StatemachineState=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.and=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.identities=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.identity=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.keystroke=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.keystrokes=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.operation=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.state=
+org.eclipse.osbp.xtext.statemachine.StatemachineState.triggers=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateCommon=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateCommon.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateCommon.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateCommon.triggers=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateElement=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateElement.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateElement.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateElement.triggers=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateOperation=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateOperation.operation=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.identities=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.keystrokes=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.operations=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.transition=
+org.eclipse.osbp.xtext.statemachine.StatemachineStateTransition.triggers=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorage=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorage.store=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorage.with=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageGet=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageGet.retrieve=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageGet.with=
+org.eclipse.osbp.xtext.statemachine.StatemachineStoragePut=
+org.eclipse.osbp.xtext.statemachine.StatemachineStoragePut.store=
+org.eclipse.osbp.xtext.statemachine.StatemachineStoragePut.with=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve.retrieve=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieveMore=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieveMore.from=
+org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieveMore.retrieve=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.\=>=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.action=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.guard=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.transition=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.trigger=
+org.eclipse.osbp.xtext.statemachine.StatemachineTransition.triggers=
+org.eclipse.osbp.xtext.statemachine.StatemachineTrigger=
+org.eclipse.osbp.xtext.statemachine.StatemachineTrigger.actions=
+org.eclipse.osbp.xtext.statemachine.StatemachineTrigger.guards=
+org.eclipse.osbp.xtext.statemachine.StatemachineTrigger.transition=
+org.eclipse.osbp.xtext.statemachine.StatemachineTrigger.trigger=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType.assistive=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType.error=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType.humanized=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType.tray=
+org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType.warning=
+org.eclipse.osbp.xtext.statemachine.TRANSLATABLEID=
+org.eclipse.osbp.xtext.statemachine.TRANSLATABLESTRING=
+org.eclipse.osbp.xtext.statemachine.UnsignedNumber=
+org.eclipse.osbp.xtext.statemachine.ValidID=
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/icons/dsl_statemachine.png b/org.eclipse.osbp.xtext.statemachine.ui/icons/dsl_statemachine.png
new file mode 100644
index 0000000..d42151c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/icons/dsl_statemachine.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/plugin.xml b/org.eclipse.osbp.xtext.statemachine.ui/plugin.xml
new file mode 100644
index 0000000..3db4719
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/plugin.xml
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="statemachine"
+            icon="icons/dsl_statemachine.png"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            name="StatemachineDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.statemachine.StatemachineDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.statemachine.StatemachineDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            icon="icons/dsl_statemachine.png"
+            name="OSBP StatemachineDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.templates"
+            icon="icons/dsl_statemachine.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            icon="icons/dsl_statemachine.png"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            name="OSBP StatemachineDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+            <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.statemachine.ui.keyword_StatemachineDSL"
+            label="StatemachineDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="statemachine">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="statemachine">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.statemachine.StatemachineDSL -->
+	<extension
+	        id="statemachinedsl.check.fast"
+	        name="StatemachineDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="statemachinedsl.check.normal"
+	        name="StatemachineDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="statemachinedsl.check.expensive"
+	        name="StatemachineDSL 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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="statemachine"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compiler.preferencePage"
+            icon="icons/dsl_statemachine.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compiler.propertyPage"
+            icon="icons/dsl_statemachine.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+            <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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.statemachine.StatemachineDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+	        class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.refactoring"
+            icon="icons/dsl_statemachine.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="statemachine">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="statemachine" label="StatemachineDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="statemachine">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.statemachine.ui/plugin.xml_gen
new file mode 100644
index 0000000..8fe732c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="statemachine"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            matchingStrategy="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="StatemachineDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.statemachine.StatemachineDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.statemachine.StatemachineDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            name="StatemachineDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            name="StatemachineDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+            <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.statemachine.ui.keyword_StatemachineDSL"
+            label="StatemachineDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="statemachine">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="statemachine">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.statemachine.StatemachineDSL -->
+	<extension
+	        id="statemachinedsl.check.fast"
+	        name="StatemachineDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="statemachinedsl.check.normal"
+	        name="StatemachineDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="statemachinedsl.check.expensive"
+	        name="StatemachineDSL 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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="statemachine"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+            <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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.statemachine.StatemachineDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.statemachine.ui.statemachinedsl.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.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.statemachine.StatemachineDSL"
+	        class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.statemachine.ui.keyword_StatemachineDSL"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory: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.statemachine.StatemachineDSL" 
+                          id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.RulerContext"
+         id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.rulerContextMenu.toggleBreakpointAction">
+         </action>
+         <action
+            label="Not used"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.rulerContextMenu.enableDisableBreakpointAction">
+         </action>
+         <action
+           label="Breakpoint Properties"
+           helpContextId="breakpoint_properties_action_context"
+           class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+           menubarPath="group.properties"
+           id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.rulerContextMenu.openBreapointPropertiesAction">
+         </action>
+      </viewerContribution>
+   </extension>
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+   <!-- Open implementation -->
+   <extension point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+            <activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.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.statemachine.StatemachineDSL.Editor.opened">
+              </reference>
+		</visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="statemachine">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="statemachine" label="StatemachineDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.statemachine.StatemachineDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="statemachine">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/pom.xml b/org.eclipse.osbp.xtext.statemachine.ui/pom.xml
new file mode 100644
index 0000000..c43ce20
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/pom.xml
@@ -0,0 +1,31 @@
+<?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:
+# 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.statemachine</groupId>
+        <artifactId>org.eclipse.osbp.xtext.statemachine.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.statemachine.ui</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+
+	</project>
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/AbstractStatemachineDSLUiModule.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/AbstractStatemachineDSLUiModule.java
new file mode 100644
index 0000000..66fb1f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/AbstractStatemachineDSLUiModule.java
@@ -0,0 +1,374 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractStatemachineDSLUiModule extends DefaultUiModule {
+	
+	public AbstractStatemachineDSLUiModule(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.statemachine.parser.antlr.internal.InternalStatemachineDSLLexer.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.statemachine.ui.labeling.StatemachineDSLLabelProvider.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.statemachine.ui.labeling.StatemachineDSLDescriptionLabelProvider.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.statemachine.ui.outline.StatemachineDSLOutlineTreeProvider.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.statemachine.ui.outline.StatemachineDSLOutlineTreeProvider.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.statemachine.ui.quickfix.StatemachineDSLQuickfixProvider.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.statemachine.ui.contentassist.StatemachineDSLProposalProvider.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.statemachine.ui.contentassist.antlr.StatemachineDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLLexer.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.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLLexer.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.statemachine.ui.contentassist.antlr.PartialStatemachineDSLContentAssistParser.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLExecutableExtensionFactory.java
new file mode 100644
index 0000000..2143205
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLExecutableExtensionFactory.java
@@ -0,0 +1,39 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.xtext.statemachine.ui.internal.StatemachineDSLActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class StatemachineDSLExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return StatemachineDSLActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return StatemachineDSLActivator.getInstance().getInjector(StatemachineDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_STATEMACHINE_STATEMACHINEDSL);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/AbstractStatemachineDSLProposalProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/AbstractStatemachineDSLProposalProvider.java
new file mode 100644
index 0000000..0889696
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/AbstractStatemachineDSLProposalProvider.java
@@ -0,0 +1,927 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 AbstractStatemachineDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeStatemachineModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePackage_Statemachines(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_Description(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachine_DescriptionValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_FunctionGroup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_InitialState(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_InitialEvent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_Events(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_Controls(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachine_States(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineEvent_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineState_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineState_Triggers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineState_Identity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineState_Keystroke(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineState_HasKeyOperation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineState_KeyOperation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineTrigger_Triggers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineTrigger_Guards(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineTrigger_HasTransition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineTrigger_Transition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineTrigger_Actions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralBlinkRate_BlinkRate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralBlinkRate_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralClear_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_ViewportRow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_ViewportColumn(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_ViewportHeight(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_ViewportWidth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_WindowHeight(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_WindowWidth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCreateWindow_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCursorType_CursorType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralCursorType_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDestroyWindow_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDeviceBrightness_Brightness(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDeviceBrightness_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayBitmap_BitmapId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayBitmap_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayText_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayText_HasType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineActionPeripheralDisplayText_TextType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayText_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_Row(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_Column(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_HasType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_TextType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralDisplayTextAt_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralInterCharacterWait_Wait(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralInterCharacterWait_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeFormat_Format(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeFormat_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeRepeatWait_Wait(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeRepeatWait_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeType_MarqueeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeType_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeUnitWait_Wait(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralMarqueeUnitWait_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralScroll_Direction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralScroll_Units(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralScroll_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralOpenDrawer_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintBarcode_Data(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintBarcode_BarcodeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintBarcode_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintBitmap_BitmapId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintBitmap_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintCut_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintCut_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintNormal_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintNormal_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintRegisterBitmap_BitmapId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintRegisterBitmap_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintRegisterBitmap_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTOpen_Host(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTOpen_Port(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTOpen_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTClose_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTAcknowledge_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTReversal_Password(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTReversal_Receipt(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTReversal_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTRegistration_Password(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTRegistration_Configuration(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTRegistration_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTAuthorization_Amount(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTAuthorization_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPTResponse_Device(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintReport_Report(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionPeripheralPrintReport_HasFilter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineActionPeripheralPrintReport_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperation_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperation_First(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperation_More(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineGuard_Guard(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineGuard_HasOnFail(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineGuard_OnFailCaption(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineGuard_OnFailDescription(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineGuard_OnFailType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineFunction_Function(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineFunction_First(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineFunction_More(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorage_Content(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorage_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorage_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorageRetrieve_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorageRetrieve_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionConditionalTransition_Transition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionConditionalTransition_Guard(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionConditionalTransition_Actions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceString_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceNumber_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceEvaluate_Evaluationtype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceTranslate_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceDtoAttribute_Dto(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceDtoAttribute_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceStringMore_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceNumberMore_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceEvaluateMore_Evaluationtype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceTranslateMore_Text(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldGetMore_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperationMore_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorageRetrieveMore_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineStorageRetrieveMore_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceDtoAttributeMore_Dto(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSourceDtoAttributeMore_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldConcatenation_First(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldConcatenation_More(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperationParameter_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineOperationParameterMore_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSet_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldSet_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldClear_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldGet_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionFieldRemove_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionItemVisible_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionItemInvisible_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionButtonCaption_Caption(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionButtonCaption_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionButtonImage_Image(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionButtonImage_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionDTOFind_Search(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionDTOFind_Dto(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionDTOFind_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineActionScheduler_Scheduler(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButton_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButton_EventType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButton_Buttons(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlField_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlField_Fields(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlField_Layouts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlDTO_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlDTO_Dtos(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlScheduler_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlScheduler_Schedulers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePeripheralDeviceLineDisplay_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePeripheralDevicePOSPrinter_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePeripheralDeviceCashDrawer_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachinePeripheralDevicePT_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlPeripheral_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlPeripheral_LineDisplays(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlPeripheral_PosPrinters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlPeripheral_CashDrawers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlPeripheral_PaymentTerminals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttribute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttribute_HasImage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineControlButtonAttribute_Image(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttribute_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttributeEventKeyboard_Keystroke(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttributeEventIdentity_Identity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlButtonAttributeEventEvent_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlFieldAttribute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlFieldAttribute_AttributeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlFieldLayout_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlDTOAttribute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlDTOAttribute_AttributeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlDTOAttribute_HasEvent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeStatemachineControlDTOAttribute_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlSchedulerAttribute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlSchedulerAttribute_Delay(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineControlSchedulerAttribute_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineDTOType_AttributeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineFieldType_AttributeType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStatemachineImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_StatemachineModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Statemachine(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineTrigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralBlinkRate(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralClear(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralCreateWindow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralCursorType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralDestroyWindow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralDeviceBrightness(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralDisplayBitmap(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralDisplayText(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralDisplayTextAt(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralInterCharacterWait(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralMarqueeFormat(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralMarqueeRepeatWait(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralMarqueeType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralMarqueeUnitWait(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralScroll(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralOpenDrawer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintBarcode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintBitmap(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintCut(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintNormal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintRegisterBitmap(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTOpen(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTClose(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTAcknowledge(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTReversal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTRegistration(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTAuthorization(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPTResponse(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionPeripheralPrintReport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSource(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineOperation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineGuard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineStorage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineStorageRetrieve(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionConditionalTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceString(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceEvaluate(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceTranslate(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceDtoAttribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceStringMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceNumberMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceEvaluateMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceTranslateMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldGetMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineOperationMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineStorageRetrieveMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSourceDtoAttributeMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldConcatenation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineOperationParameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineOperationParameterMore(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldSet(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldClear(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldGet(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionFieldRemove(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlVisibility(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionItemVisible(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionItemInvisible(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionButtonCaption(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionButtonImage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionDTOFind(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineActionScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControl(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButton(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlField(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlDTO(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePeripheralDeviceLineDisplay(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePeripheralDevicePOSPrinter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePeripheralDeviceCashDrawer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePeripheralDevicePT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlPeripheral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonAttribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonAttributeEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonAttributeEventKeyboard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonAttributeEventIdentity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonAttributeEventEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlFieldAttribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlFieldLayout(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlDTOAttribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlSchedulerAttribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineDTOType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineFieldType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineInternalType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineControlButtonEventType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineEvaluationType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineUserMessageType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineLineDisplayCursorType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineLineDisplayMarqueeType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineLineDisplayMarqueeFormat(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineLineDisplayTextType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineLineDisplayScrollTextType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachinePOSPrinterBarcodeType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StatemachineQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValidID(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_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_UnsignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/PartialStatemachineDSLContentAssistParser.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/PartialStatemachineDSLContentAssistParser.java
new file mode 100644
index 0000000..168b8b7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/PartialStatemachineDSLContentAssistParser.java
@@ -0,0 +1,48 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 PartialStatemachineDSLContentAssistParser extends StatemachineDSLParser 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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/StatemachineDSLParser.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/StatemachineDSLParser.java
new file mode 100644
index 0000000..778692a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/StatemachineDSLParser.java
@@ -0,0 +1,787 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.services.StatemachineDSLGrammarAccess;
+
+public class StatemachineDSLParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private StatemachineDSLGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLParser createParser() {
+		org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLParser result = new org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLParser(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.getStatemachineActionAccess().getAlternatives(), "rule__StatemachineAction__Alternatives");
+					put(grammarAccess.getStatemachineActionFieldSourceAccess().getAlternatives(), "rule__StatemachineActionFieldSource__Alternatives");
+					put(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getAlternatives(), "rule__StatemachineActionFieldSourceMore__Alternatives");
+					put(grammarAccess.getStatemachineControlVisibilityAccess().getAlternatives(), "rule__StatemachineControlVisibility__Alternatives");
+					put(grammarAccess.getStatemachineControlAccess().getAlternatives(), "rule__StatemachineControl__Alternatives");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getAlternatives(), "rule__StatemachineControlButtonAttributeEvent__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.getStatemachineInternalTypeAccess().getAlternatives(), "rule__StatemachineInternalType__Alternatives");
+					put(grammarAccess.getStatemachineControlButtonEventTypeAccess().getAlternatives(), "rule__StatemachineControlButtonEventType__Alternatives");
+					put(grammarAccess.getStatemachineEvaluationTypeAccess().getAlternatives(), "rule__StatemachineEvaluationType__Alternatives");
+					put(grammarAccess.getStatemachineUserMessageTypeAccess().getAlternatives(), "rule__StatemachineUserMessageType__Alternatives");
+					put(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getAlternatives(), "rule__StatemachineLineDisplayCursorType__Alternatives");
+					put(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getAlternatives(), "rule__StatemachineLineDisplayMarqueeType__Alternatives");
+					put(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getAlternatives(), "rule__StatemachineLineDisplayMarqueeFormat__Alternatives");
+					put(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getAlternatives(), "rule__StatemachineLineDisplayTextType__Alternatives");
+					put(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getAlternatives(), "rule__StatemachineLineDisplayScrollTextType__Alternatives");
+					put(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getAlternatives(), "rule__StatemachinePOSPrinterBarcodeType__Alternatives");
+					put(grammarAccess.getStatemachinePackageAccess().getGroup(), "rule__StatemachinePackage__Group__0");
+					put(grammarAccess.getStatemachinePackageAccess().getGroup_3(), "rule__StatemachinePackage__Group_3__0");
+					put(grammarAccess.getStatemachineAccess().getGroup(), "rule__Statemachine__Group__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_2(), "rule__Statemachine__Group_2__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_3(), "rule__Statemachine__Group_3__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_8(), "rule__Statemachine__Group_8__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_8_1(), "rule__Statemachine__Group_8_1__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_9(), "rule__Statemachine__Group_9__0");
+					put(grammarAccess.getStatemachineAccess().getGroup_10(), "rule__Statemachine__Group_10__0");
+					put(grammarAccess.getStatemachineEventAccess().getGroup(), "rule__StatemachineEvent__Group__0");
+					put(grammarAccess.getStatemachineStateAccess().getGroup(), "rule__StatemachineState__Group__0");
+					put(grammarAccess.getStatemachineStateAccess().getGroup_3_0(), "rule__StatemachineState__Group_3_0__0");
+					put(grammarAccess.getStatemachineStateAccess().getGroup_3_1(), "rule__StatemachineState__Group_3_1__0");
+					put(grammarAccess.getStatemachineStateAccess().getGroup_3_2(), "rule__StatemachineState__Group_3_2__0");
+					put(grammarAccess.getStatemachineStateAccess().getGroup_3_2_3(), "rule__StatemachineState__Group_3_2_3__0");
+					put(grammarAccess.getStatemachineTriggerAccess().getGroup(), "rule__StatemachineTrigger__Group__0");
+					put(grammarAccess.getStatemachineTriggerAccess().getGroup_3(), "rule__StatemachineTrigger__Group_3__0");
+					put(grammarAccess.getStatemachineTriggerAccess().getGroup_5(), "rule__StatemachineTrigger__Group_5__0");
+					put(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getGroup(), "rule__StatemachineActionPeripheralBlinkRate__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralClearAccess().getGroup(), "rule__StatemachineActionPeripheralClear__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getGroup(), "rule__StatemachineActionPeripheralCreateWindow__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getGroup(), "rule__StatemachineActionPeripheralCursorType__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getGroup(), "rule__StatemachineActionPeripheralDestroyWindow__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getGroup(), "rule__StatemachineActionPeripheralDeviceBrightness__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getGroup(), "rule__StatemachineActionPeripheralDisplayBitmap__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getGroup(), "rule__StatemachineActionPeripheralDisplayText__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getGroup_3(), "rule__StatemachineActionPeripheralDisplayText__Group_3__0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getGroup(), "rule__StatemachineActionPeripheralDisplayTextAt__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getGroup_7(), "rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0");
+					put(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getGroup(), "rule__StatemachineActionPeripheralInterCharacterWait__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getGroup(), "rule__StatemachineActionPeripheralMarqueeFormat__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getGroup(), "rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getGroup(), "rule__StatemachineActionPeripheralMarqueeType__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getGroup(), "rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralScrollAccess().getGroup(), "rule__StatemachineActionPeripheralScroll__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getGroup(), "rule__StatemachineActionPeripheralOpenDrawer__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getGroup(), "rule__StatemachineActionPeripheralPrintBarcode__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getGroup(), "rule__StatemachineActionPeripheralPrintBitmap__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getGroup(), "rule__StatemachineActionPeripheralPrintCut__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getGroup(), "rule__StatemachineActionPeripheralPrintNormal__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getGroup(), "rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getGroup(), "rule__StatemachineActionPeripheralPTOpen__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getGroup(), "rule__StatemachineActionPeripheralPTClose__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getGroup(), "rule__StatemachineActionPeripheralPTAcknowledge__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getGroup(), "rule__StatemachineActionPeripheralPTReversal__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getGroup(), "rule__StatemachineActionPeripheralPTRegistration__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getGroup(), "rule__StatemachineActionPeripheralPTAuthorization__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getGroup(), "rule__StatemachineActionPeripheralPTResponse__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getGroup(), "rule__StatemachineActionPeripheralPrintReport__Group__0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getGroup_2(), "rule__StatemachineActionPeripheralPrintReport__Group_2__0");
+					put(grammarAccess.getStatemachineOperationAccess().getGroup(), "rule__StatemachineOperation__Group__0");
+					put(grammarAccess.getStatemachineGuardAccess().getGroup(), "rule__StatemachineGuard__Group__0");
+					put(grammarAccess.getStatemachineGuardAccess().getGroup_2(), "rule__StatemachineGuard__Group_2__0");
+					put(grammarAccess.getStatemachineFunctionAccess().getGroup(), "rule__StatemachineFunction__Group__0");
+					put(grammarAccess.getStatemachineStorageAccess().getGroup(), "rule__StatemachineStorage__Group__0");
+					put(grammarAccess.getStatemachineStorageRetrieveAccess().getGroup(), "rule__StatemachineStorageRetrieve__Group__0");
+					put(grammarAccess.getStatemachineActionConditionalTransitionAccess().getGroup(), "rule__StatemachineActionConditionalTransition__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceEventAccess().getGroup(), "rule__StatemachineActionFieldSourceEvent__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getGroup(), "rule__StatemachineActionFieldSourceTranslate__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getGroup(), "rule__StatemachineActionFieldSourceDtoAttribute__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getGroup(), "rule__StatemachineActionFieldSourceStringMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getGroup(), "rule__StatemachineActionFieldSourceNumberMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getGroup(), "rule__StatemachineActionFieldSourceEvaluateMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getGroup(), "rule__StatemachineActionFieldSourceTranslateMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldGetMoreAccess().getGroup(), "rule__StatemachineActionFieldGetMore__Group__0");
+					put(grammarAccess.getStatemachineOperationMoreAccess().getGroup(), "rule__StatemachineOperationMore__Group__0");
+					put(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getGroup(), "rule__StatemachineStorageRetrieveMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getGroup(), "rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldConcatenationAccess().getGroup(), "rule__StatemachineActionFieldConcatenation__Group__0");
+					put(grammarAccess.getStatemachineOperationParameterMoreAccess().getGroup(), "rule__StatemachineOperationParameterMore__Group__0");
+					put(grammarAccess.getStatemachineActionFieldSetAccess().getGroup(), "rule__StatemachineActionFieldSet__Group__0");
+					put(grammarAccess.getStatemachineActionFieldClearAccess().getGroup(), "rule__StatemachineActionFieldClear__Group__0");
+					put(grammarAccess.getStatemachineActionFieldGetAccess().getGroup(), "rule__StatemachineActionFieldGet__Group__0");
+					put(grammarAccess.getStatemachineActionFieldRemoveAccess().getGroup(), "rule__StatemachineActionFieldRemove__Group__0");
+					put(grammarAccess.getStatemachineActionItemVisibleAccess().getGroup(), "rule__StatemachineActionItemVisible__Group__0");
+					put(grammarAccess.getStatemachineActionItemInvisibleAccess().getGroup(), "rule__StatemachineActionItemInvisible__Group__0");
+					put(grammarAccess.getStatemachineActionButtonCaptionAccess().getGroup(), "rule__StatemachineActionButtonCaption__Group__0");
+					put(grammarAccess.getStatemachineActionButtonImageAccess().getGroup(), "rule__StatemachineActionButtonImage__Group__0");
+					put(grammarAccess.getStatemachineActionDTOFindAccess().getGroup(), "rule__StatemachineActionDTOFind__Group__0");
+					put(grammarAccess.getStatemachineActionSchedulerAccess().getGroup(), "rule__StatemachineActionScheduler__Group__0");
+					put(grammarAccess.getStatemachineControlButtonAccess().getGroup(), "rule__StatemachineControlButton__Group__0");
+					put(grammarAccess.getStatemachineControlFieldAccess().getGroup(), "rule__StatemachineControlField__Group__0");
+					put(grammarAccess.getStatemachineControlDTOAccess().getGroup(), "rule__StatemachineControlDTO__Group__0");
+					put(grammarAccess.getStatemachineControlSchedulerAccess().getGroup(), "rule__StatemachineControlScheduler__Group__0");
+					put(grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getGroup(), "rule__StatemachinePeripheralDeviceLineDisplay__Group__0");
+					put(grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getGroup(), "rule__StatemachinePeripheralDevicePOSPrinter__Group__0");
+					put(grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getGroup(), "rule__StatemachinePeripheralDeviceCashDrawer__Group__0");
+					put(grammarAccess.getStatemachinePeripheralDevicePTAccess().getGroup(), "rule__StatemachinePeripheralDevicePT__Group__0");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getGroup(), "rule__StatemachineControlPeripheral__Group__0");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getGroup(), "rule__StatemachineControlButtonAttribute__Group__0");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getGroup_2(), "rule__StatemachineControlButtonAttribute__Group_2__0");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getGroup(), "rule__StatemachineControlButtonAttributeEventKeyboard__Group__0");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getGroup(), "rule__StatemachineControlButtonAttributeEventIdentity__Group__0");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getGroup(), "rule__StatemachineControlButtonAttributeEventEvent__Group__0");
+					put(grammarAccess.getStatemachineControlFieldAttributeAccess().getGroup(), "rule__StatemachineControlFieldAttribute__Group__0");
+					put(grammarAccess.getStatemachineControlFieldLayoutAccess().getGroup(), "rule__StatemachineControlFieldLayout__Group__0");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getGroup(), "rule__StatemachineControlDTOAttribute__Group__0");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getGroup_4(), "rule__StatemachineControlDTOAttribute__Group_4__0");
+					put(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getGroup(), "rule__StatemachineControlSchedulerAttribute__Group__0");
+					put(grammarAccess.getStatemachineImportAccess().getGroup(), "rule__StatemachineImport__Group__0");
+					put(grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getGroup(), "rule__StatemachineQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getGroup_1(), "rule__StatemachineQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getSignedNumberAccess().getGroup(), "rule__SignedNumber__Group__0");
+					put(grammarAccess.getUnsignedNumberAccess().getGroup(), "rule__UnsignedNumber__Group__0");
+					put(grammarAccess.getUnsignedNumberAccess().getGroup_1(), "rule__UnsignedNumber__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.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.getStatemachineModelAccess().getPackagesAssignment(), "rule__StatemachineModel__PackagesAssignment");
+					put(grammarAccess.getStatemachinePackageAccess().getNameAssignment_2(), "rule__StatemachinePackage__NameAssignment_2");
+					put(grammarAccess.getStatemachinePackageAccess().getImportsAssignment_3_1(), "rule__StatemachinePackage__ImportsAssignment_3_1");
+					put(grammarAccess.getStatemachinePackageAccess().getStatemachinesAssignment_3_2(), "rule__StatemachinePackage__StatemachinesAssignment_3_2");
+					put(grammarAccess.getStatemachineAccess().getNameAssignment_1(), "rule__Statemachine__NameAssignment_1");
+					put(grammarAccess.getStatemachineAccess().getDescriptionAssignment_2_0(), "rule__Statemachine__DescriptionAssignment_2_0");
+					put(grammarAccess.getStatemachineAccess().getDescriptionValueAssignment_2_1(), "rule__Statemachine__DescriptionValueAssignment_2_1");
+					put(grammarAccess.getStatemachineAccess().getFunctionGroupAssignment_3_1(), "rule__Statemachine__FunctionGroupAssignment_3_1");
+					put(grammarAccess.getStatemachineAccess().getInitialStateAssignment_5(), "rule__Statemachine__InitialStateAssignment_5");
+					put(grammarAccess.getStatemachineAccess().getInitialEventAssignment_7(), "rule__Statemachine__InitialEventAssignment_7");
+					put(grammarAccess.getStatemachineAccess().getEventsAssignment_8_1_1(), "rule__Statemachine__EventsAssignment_8_1_1");
+					put(grammarAccess.getStatemachineAccess().getControlsAssignment_9_2(), "rule__Statemachine__ControlsAssignment_9_2");
+					put(grammarAccess.getStatemachineAccess().getStatesAssignment_10_2(), "rule__Statemachine__StatesAssignment_10_2");
+					put(grammarAccess.getStatemachineEventAccess().getNameAssignment_1(), "rule__StatemachineEvent__NameAssignment_1");
+					put(grammarAccess.getStatemachineStateAccess().getNameAssignment_1(), "rule__StatemachineState__NameAssignment_1");
+					put(grammarAccess.getStatemachineStateAccess().getTriggersAssignment_3_0_2(), "rule__StatemachineState__TriggersAssignment_3_0_2");
+					put(grammarAccess.getStatemachineStateAccess().getIdentityAssignment_3_1_1(), "rule__StatemachineState__IdentityAssignment_3_1_1");
+					put(grammarAccess.getStatemachineStateAccess().getKeystrokeAssignment_3_2_2(), "rule__StatemachineState__KeystrokeAssignment_3_2_2");
+					put(grammarAccess.getStatemachineStateAccess().getHasKeyOperationAssignment_3_2_3_0(), "rule__StatemachineState__HasKeyOperationAssignment_3_2_3_0");
+					put(grammarAccess.getStatemachineStateAccess().getKeyOperationAssignment_3_2_3_1(), "rule__StatemachineState__KeyOperationAssignment_3_2_3_1");
+					put(grammarAccess.getStatemachineTriggerAccess().getTriggersAssignment_2(), "rule__StatemachineTrigger__TriggersAssignment_2");
+					put(grammarAccess.getStatemachineTriggerAccess().getGuardsAssignment_3_2(), "rule__StatemachineTrigger__GuardsAssignment_3_2");
+					put(grammarAccess.getStatemachineTriggerAccess().getHasTransitionAssignment_5_0(), "rule__StatemachineTrigger__HasTransitionAssignment_5_0");
+					put(grammarAccess.getStatemachineTriggerAccess().getTransitionAssignment_5_1(), "rule__StatemachineTrigger__TransitionAssignment_5_1");
+					put(grammarAccess.getStatemachineTriggerAccess().getActionsAssignment_7(), "rule__StatemachineTrigger__ActionsAssignment_7");
+					put(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateAssignment_1(), "rule__StatemachineActionPeripheralBlinkRate__BlinkRateAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralBlinkRate__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralClearAccess().getDeviceAssignment_1(), "rule__StatemachineActionPeripheralClear__DeviceAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportRowAssignment_2(), "rule__StatemachineActionPeripheralCreateWindow__ViewportRowAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportColumnAssignment_4(), "rule__StatemachineActionPeripheralCreateWindow__ViewportColumnAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportHeightAssignment_6(), "rule__StatemachineActionPeripheralCreateWindow__ViewportHeightAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportWidthAssignment_8(), "rule__StatemachineActionPeripheralCreateWindow__ViewportWidthAssignment_8");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightAssignment_10(), "rule__StatemachineActionPeripheralCreateWindow__WindowHeightAssignment_10");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthAssignment_12(), "rule__StatemachineActionPeripheralCreateWindow__WindowWidthAssignment_12");
+					put(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getDeviceAssignment_14(), "rule__StatemachineActionPeripheralCreateWindow__DeviceAssignment_14");
+					put(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeAssignment_1(), "rule__StatemachineActionPeripheralCursorType__CursorTypeAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralCursorType__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDeviceAssignment_1(), "rule__StatemachineActionPeripheralDestroyWindow__DeviceAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getBrightnessAssignment_1(), "rule__StatemachineActionPeripheralDeviceBrightness__BrightnessAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralDeviceBrightness__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getBitmapIdAssignment_2(), "rule__StatemachineActionPeripheralDisplayBitmap__BitmapIdAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralDisplayBitmap__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextAssignment_2(), "rule__StatemachineActionPeripheralDisplayText__TextAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getHasTypeAssignment_3_0(), "rule__StatemachineActionPeripheralDisplayText__HasTypeAssignment_3_0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextTypeAssignment_3_1(), "rule__StatemachineActionPeripheralDisplayText__TextTypeAssignment_3_1");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getDeviceAssignment_5(), "rule__StatemachineActionPeripheralDisplayText__DeviceAssignment_5");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextAssignment_2(), "rule__StatemachineActionPeripheralDisplayTextAt__TextAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getRowAssignment_4(), "rule__StatemachineActionPeripheralDisplayTextAt__RowAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getColumnAssignment_6(), "rule__StatemachineActionPeripheralDisplayTextAt__ColumnAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getHasTypeAssignment_7_0(), "rule__StatemachineActionPeripheralDisplayTextAt__HasTypeAssignment_7_0");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextTypeAssignment_7_1(), "rule__StatemachineActionPeripheralDisplayTextAt__TextTypeAssignment_7_1");
+					put(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getDeviceAssignment_9(), "rule__StatemachineActionPeripheralDisplayTextAt__DeviceAssignment_9");
+					put(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getWaitAssignment_1(), "rule__StatemachineActionPeripheralInterCharacterWait__WaitAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralInterCharacterWait__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getFormatAssignment_1(), "rule__StatemachineActionPeripheralMarqueeFormat__FormatAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralMarqueeFormat__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getWaitAssignment_1(), "rule__StatemachineActionPeripheralMarqueeRepeatWait__WaitAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralMarqueeRepeatWait__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeAssignment_1(), "rule__StatemachineActionPeripheralMarqueeType__MarqueeTypeAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralMarqueeType__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getWaitAssignment_1(), "rule__StatemachineActionPeripheralMarqueeUnitWait__WaitAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getDeviceAssignment_3(), "rule__StatemachineActionPeripheralMarqueeUnitWait__DeviceAssignment_3");
+					put(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDirectionAssignment_1(), "rule__StatemachineActionPeripheralScroll__DirectionAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralScrollAccess().getUnitsAssignment_2(), "rule__StatemachineActionPeripheralScroll__UnitsAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralScroll__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getDeviceAssignment_1(), "rule__StatemachineActionPeripheralOpenDrawer__DeviceAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataAssignment_2(), "rule__StatemachineActionPeripheralPrintBarcode__DataAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeAssignment_4(), "rule__StatemachineActionPeripheralPrintBarcode__BarcodeTypeAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDeviceAssignment_6(), "rule__StatemachineActionPeripheralPrintBarcode__DeviceAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getBitmapIdAssignment_2(), "rule__StatemachineActionPeripheralPrintBitmap__BitmapIdAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralPrintBitmap__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextAssignment_2(), "rule__StatemachineActionPeripheralPrintCut__TextAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralPrintCut__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getTextAssignment_2(), "rule__StatemachineActionPeripheralPrintNormal__TextAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralPrintNormal__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getBitmapIdAssignment_2(), "rule__StatemachineActionPeripheralPrintRegisterBitmap__BitmapIdAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameAssignment_4(), "rule__StatemachineActionPeripheralPrintRegisterBitmap__NameAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getDeviceAssignment_6(), "rule__StatemachineActionPeripheralPrintRegisterBitmap__DeviceAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostAssignment_2(), "rule__StatemachineActionPeripheralPTOpen__HostAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortAssignment_4(), "rule__StatemachineActionPeripheralPTOpen__PortAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getDeviceAssignment_6(), "rule__StatemachineActionPeripheralPTOpen__DeviceAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getDeviceAssignment_2(), "rule__StatemachineActionPeripheralPTClose__DeviceAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getDeviceAssignment_2(), "rule__StatemachineActionPeripheralPTAcknowledge__DeviceAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPasswordAssignment_2(), "rule__StatemachineActionPeripheralPTReversal__PasswordAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getReceiptAssignment_4(), "rule__StatemachineActionPeripheralPTReversal__ReceiptAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getDeviceAssignment_6(), "rule__StatemachineActionPeripheralPTReversal__DeviceAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPasswordAssignment_2(), "rule__StatemachineActionPeripheralPTRegistration__PasswordAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationAssignment_4(), "rule__StatemachineActionPeripheralPTRegistration__ConfigurationAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getDeviceAssignment_6(), "rule__StatemachineActionPeripheralPTRegistration__DeviceAssignment_6");
+					put(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getAmountAssignment_2(), "rule__StatemachineActionPeripheralPTAuthorization__AmountAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getDeviceAssignment_4(), "rule__StatemachineActionPeripheralPTAuthorization__DeviceAssignment_4");
+					put(grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getDeviceAssignment_2(), "rule__StatemachineActionPeripheralPTResponse__DeviceAssignment_2");
+					put(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getReportAssignment_1(), "rule__StatemachineActionPeripheralPrintReport__ReportAssignment_1");
+					put(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getHasFilterAssignment_2_0(), "rule__StatemachineActionPeripheralPrintReport__HasFilterAssignment_2_0");
+					put(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getKeyAssignment_2_1(), "rule__StatemachineActionPeripheralPrintReport__KeyAssignment_2_1");
+					put(grammarAccess.getStatemachineOperationAccess().getOperationAssignment_1(), "rule__StatemachineOperation__OperationAssignment_1");
+					put(grammarAccess.getStatemachineOperationAccess().getFirstAssignment_3(), "rule__StatemachineOperation__FirstAssignment_3");
+					put(grammarAccess.getStatemachineOperationAccess().getMoreAssignment_4(), "rule__StatemachineOperation__MoreAssignment_4");
+					put(grammarAccess.getStatemachineGuardAccess().getGuardAssignment_1(), "rule__StatemachineGuard__GuardAssignment_1");
+					put(grammarAccess.getStatemachineGuardAccess().getHasOnFailAssignment_2_0(), "rule__StatemachineGuard__HasOnFailAssignment_2_0");
+					put(grammarAccess.getStatemachineGuardAccess().getOnFailCaptionAssignment_2_2(), "rule__StatemachineGuard__OnFailCaptionAssignment_2_2");
+					put(grammarAccess.getStatemachineGuardAccess().getOnFailDescriptionAssignment_2_4(), "rule__StatemachineGuard__OnFailDescriptionAssignment_2_4");
+					put(grammarAccess.getStatemachineGuardAccess().getOnFailTypeAssignment_2_6(), "rule__StatemachineGuard__OnFailTypeAssignment_2_6");
+					put(grammarAccess.getStatemachineFunctionAccess().getFunctionAssignment_1(), "rule__StatemachineFunction__FunctionAssignment_1");
+					put(grammarAccess.getStatemachineFunctionAccess().getFirstAssignment_3(), "rule__StatemachineFunction__FirstAssignment_3");
+					put(grammarAccess.getStatemachineFunctionAccess().getMoreAssignment_4(), "rule__StatemachineFunction__MoreAssignment_4");
+					put(grammarAccess.getStatemachineStorageAccess().getContentAssignment_1(), "rule__StatemachineStorage__ContentAssignment_1");
+					put(grammarAccess.getStatemachineStorageAccess().getKeyAssignment_3(), "rule__StatemachineStorage__KeyAssignment_3");
+					put(grammarAccess.getStatemachineStorageAccess().getAttributeAssignment_5(), "rule__StatemachineStorage__AttributeAssignment_5");
+					put(grammarAccess.getStatemachineStorageRetrieveAccess().getKeyAssignment_2(), "rule__StatemachineStorageRetrieve__KeyAssignment_2");
+					put(grammarAccess.getStatemachineStorageRetrieveAccess().getAttributeAssignment_4(), "rule__StatemachineStorageRetrieve__AttributeAssignment_4");
+					put(grammarAccess.getStatemachineActionConditionalTransitionAccess().getTransitionAssignment_1(), "rule__StatemachineActionConditionalTransition__TransitionAssignment_1");
+					put(grammarAccess.getStatemachineActionConditionalTransitionAccess().getGuardAssignment_2(), "rule__StatemachineActionConditionalTransition__GuardAssignment_2");
+					put(grammarAccess.getStatemachineActionConditionalTransitionAccess().getActionsAssignment_4(), "rule__StatemachineActionConditionalTransition__ActionsAssignment_4");
+					put(grammarAccess.getStatemachineActionFieldSourceStringAccess().getTextAssignment(), "rule__StatemachineActionFieldSourceString__TextAssignment");
+					put(grammarAccess.getStatemachineActionFieldSourceNumberAccess().getValueAssignment(), "rule__StatemachineActionFieldSourceNumber__ValueAssignment");
+					put(grammarAccess.getStatemachineActionFieldSourceEvaluateAccess().getEvaluationtypeAssignment(), "rule__StatemachineActionFieldSourceEvaluate__EvaluationtypeAssignment");
+					put(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getTextAssignment_1(), "rule__StatemachineActionFieldSourceTranslate__TextAssignment_1");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getDtoAssignment_1(), "rule__StatemachineActionFieldSourceDtoAttribute__DtoAssignment_1");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getAttributeAssignment_3(), "rule__StatemachineActionFieldSourceDtoAttribute__AttributeAssignment_3");
+					put(grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getTextAssignment_2(), "rule__StatemachineActionFieldSourceStringMore__TextAssignment_2");
+					put(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getValueAssignment_2(), "rule__StatemachineActionFieldSourceNumberMore__ValueAssignment_2");
+					put(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getEvaluationtypeAssignment_2(), "rule__StatemachineActionFieldSourceEvaluateMore__EvaluationtypeAssignment_2");
+					put(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getTextAssignment_3(), "rule__StatemachineActionFieldSourceTranslateMore__TextAssignment_3");
+					put(grammarAccess.getStatemachineActionFieldGetMoreAccess().getAttributeAssignment_3(), "rule__StatemachineActionFieldGetMore__AttributeAssignment_3");
+					put(grammarAccess.getStatemachineOperationMoreAccess().getOperationAssignment_3(), "rule__StatemachineOperationMore__OperationAssignment_3");
+					put(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getKeyAssignment_4(), "rule__StatemachineStorageRetrieveMore__KeyAssignment_4");
+					put(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getAttributeAssignment_6(), "rule__StatemachineStorageRetrieveMore__AttributeAssignment_6");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getDtoAssignment_3(), "rule__StatemachineActionFieldSourceDtoAttributeMore__DtoAssignment_3");
+					put(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getAttributeAssignment_5(), "rule__StatemachineActionFieldSourceDtoAttributeMore__AttributeAssignment_5");
+					put(grammarAccess.getStatemachineActionFieldConcatenationAccess().getFirstAssignment_0(), "rule__StatemachineActionFieldConcatenation__FirstAssignment_0");
+					put(grammarAccess.getStatemachineActionFieldConcatenationAccess().getMoreAssignment_1(), "rule__StatemachineActionFieldConcatenation__MoreAssignment_1");
+					put(grammarAccess.getStatemachineOperationParameterAccess().getSourceAssignment(), "rule__StatemachineOperationParameter__SourceAssignment");
+					put(grammarAccess.getStatemachineOperationParameterMoreAccess().getSourceAssignment_2(), "rule__StatemachineOperationParameterMore__SourceAssignment_2");
+					put(grammarAccess.getStatemachineActionFieldSetAccess().getSourceAssignment_1(), "rule__StatemachineActionFieldSet__SourceAssignment_1");
+					put(grammarAccess.getStatemachineActionFieldSetAccess().getAttributeAssignment_3(), "rule__StatemachineActionFieldSet__AttributeAssignment_3");
+					put(grammarAccess.getStatemachineActionFieldClearAccess().getAttributeAssignment_1(), "rule__StatemachineActionFieldClear__AttributeAssignment_1");
+					put(grammarAccess.getStatemachineActionFieldGetAccess().getAttributeAssignment_1(), "rule__StatemachineActionFieldGet__AttributeAssignment_1");
+					put(grammarAccess.getStatemachineActionFieldRemoveAccess().getAttributeAssignment_1(), "rule__StatemachineActionFieldRemove__AttributeAssignment_1");
+					put(grammarAccess.getStatemachineActionItemVisibleAccess().getAttributeAssignment_1(), "rule__StatemachineActionItemVisible__AttributeAssignment_1");
+					put(grammarAccess.getStatemachineActionItemInvisibleAccess().getAttributeAssignment_1(), "rule__StatemachineActionItemInvisible__AttributeAssignment_1");
+					put(grammarAccess.getStatemachineActionButtonCaptionAccess().getCaptionAssignment_1(), "rule__StatemachineActionButtonCaption__CaptionAssignment_1");
+					put(grammarAccess.getStatemachineActionButtonCaptionAccess().getAttributeAssignment_3(), "rule__StatemachineActionButtonCaption__AttributeAssignment_3");
+					put(grammarAccess.getStatemachineActionButtonImageAccess().getImageAssignment_1(), "rule__StatemachineActionButtonImage__ImageAssignment_1");
+					put(grammarAccess.getStatemachineActionButtonImageAccess().getAttributeAssignment_3(), "rule__StatemachineActionButtonImage__AttributeAssignment_3");
+					put(grammarAccess.getStatemachineActionDTOFindAccess().getSearchAssignment_1(), "rule__StatemachineActionDTOFind__SearchAssignment_1");
+					put(grammarAccess.getStatemachineActionDTOFindAccess().getDtoAssignment_3(), "rule__StatemachineActionDTOFind__DtoAssignment_3");
+					put(grammarAccess.getStatemachineActionDTOFindAccess().getAttributeAssignment_5(), "rule__StatemachineActionDTOFind__AttributeAssignment_5");
+					put(grammarAccess.getStatemachineActionSchedulerAccess().getSchedulerAssignment_1(), "rule__StatemachineActionScheduler__SchedulerAssignment_1");
+					put(grammarAccess.getStatemachineControlButtonAccess().getNameAssignment_1(), "rule__StatemachineControlButton__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlButtonAccess().getEventTypeAssignment_3(), "rule__StatemachineControlButton__EventTypeAssignment_3");
+					put(grammarAccess.getStatemachineControlButtonAccess().getButtonsAssignment_5(), "rule__StatemachineControlButton__ButtonsAssignment_5");
+					put(grammarAccess.getStatemachineControlFieldAccess().getNameAssignment_1(), "rule__StatemachineControlField__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlFieldAccess().getFieldsAssignment_3_0(), "rule__StatemachineControlField__FieldsAssignment_3_0");
+					put(grammarAccess.getStatemachineControlFieldAccess().getLayoutsAssignment_3_1(), "rule__StatemachineControlField__LayoutsAssignment_3_1");
+					put(grammarAccess.getStatemachineControlDTOAccess().getNameAssignment_1(), "rule__StatemachineControlDTO__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlDTOAccess().getDtosAssignment_3(), "rule__StatemachineControlDTO__DtosAssignment_3");
+					put(grammarAccess.getStatemachineControlSchedulerAccess().getNameAssignment_1(), "rule__StatemachineControlScheduler__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlSchedulerAccess().getSchedulersAssignment_3(), "rule__StatemachineControlScheduler__SchedulersAssignment_3");
+					put(grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getNameAssignment_1(), "rule__StatemachinePeripheralDeviceLineDisplay__NameAssignment_1");
+					put(grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getNameAssignment_1(), "rule__StatemachinePeripheralDevicePOSPrinter__NameAssignment_1");
+					put(grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getNameAssignment_1(), "rule__StatemachinePeripheralDeviceCashDrawer__NameAssignment_1");
+					put(grammarAccess.getStatemachinePeripheralDevicePTAccess().getNameAssignment_1(), "rule__StatemachinePeripheralDevicePT__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getNameAssignment_1(), "rule__StatemachineControlPeripheral__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getLineDisplaysAssignment_3(), "rule__StatemachineControlPeripheral__LineDisplaysAssignment_3");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getPosPrintersAssignment_4(), "rule__StatemachineControlPeripheral__PosPrintersAssignment_4");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getCashDrawersAssignment_5(), "rule__StatemachineControlPeripheral__CashDrawersAssignment_5");
+					put(grammarAccess.getStatemachineControlPeripheralAccess().getPaymentTerminalsAssignment_6(), "rule__StatemachineControlPeripheral__PaymentTerminalsAssignment_6");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getNameAssignment_1(), "rule__StatemachineControlButtonAttribute__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getHasImageAssignment_2_0(), "rule__StatemachineControlButtonAttribute__HasImageAssignment_2_0");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getImageAssignment_2_1(), "rule__StatemachineControlButtonAttribute__ImageAssignment_2_1");
+					put(grammarAccess.getStatemachineControlButtonAttributeAccess().getEventAssignment_3(), "rule__StatemachineControlButtonAttribute__EventAssignment_3");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getKeystrokeAssignment_2(), "rule__StatemachineControlButtonAttributeEventKeyboard__KeystrokeAssignment_2");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getIdentityAssignment_2(), "rule__StatemachineControlButtonAttributeEventIdentity__IdentityAssignment_2");
+					put(grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getEventAssignment_2(), "rule__StatemachineControlButtonAttributeEventEvent__EventAssignment_2");
+					put(grammarAccess.getStatemachineControlFieldAttributeAccess().getNameAssignment_1(), "rule__StatemachineControlFieldAttribute__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlFieldAttributeAccess().getAttributeTypeAssignment_3(), "rule__StatemachineControlFieldAttribute__AttributeTypeAssignment_3");
+					put(grammarAccess.getStatemachineControlFieldLayoutAccess().getNameAssignment_1(), "rule__StatemachineControlFieldLayout__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getNameAssignment_1(), "rule__StatemachineControlDTOAttribute__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getAttributeTypeAssignment_3(), "rule__StatemachineControlDTOAttribute__AttributeTypeAssignment_3");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getHasEventAssignment_4_0(), "rule__StatemachineControlDTOAttribute__HasEventAssignment_4_0");
+					put(grammarAccess.getStatemachineControlDTOAttributeAccess().getEventAssignment_4_1(), "rule__StatemachineControlDTOAttribute__EventAssignment_4_1");
+					put(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getNameAssignment_1(), "rule__StatemachineControlSchedulerAttribute__NameAssignment_1");
+					put(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getDelayAssignment_3(), "rule__StatemachineControlSchedulerAttribute__DelayAssignment_3");
+					put(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getEventAssignment_5(), "rule__StatemachineControlSchedulerAttribute__EventAssignment_5");
+					put(grammarAccess.getStatemachineDTOTypeAccess().getAttributeTypeAssignment(), "rule__StatemachineDTOType__AttributeTypeAssignment");
+					put(grammarAccess.getStatemachineFieldTypeAccess().getAttributeTypeAssignment(), "rule__StatemachineFieldType__AttributeTypeAssignment");
+					put(grammarAccess.getStatemachineImportAccess().getImportedNamespaceAssignment_1(), "rule__StatemachineImport__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.getStatemachineStateAccess().getUnorderedGroup_3(), "rule__StatemachineState__UnorderedGroup_3");
+					put(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3(), "rule__StatemachineControlField__UnorderedGroup_3");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLParser typedParser = (org.eclipse.osbp.xtext.statemachine.ui.contentassist.antlr.internal.InternalStatemachineDSLParser) parser;
+			typedParser.entryRuleStatemachineModel();
+			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 StatemachineDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(StatemachineDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g
new file mode 100644
index 0000000..09ffb65
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+grammar InternalStatemachineDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.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.statemachine.services.StatemachineDSLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private StatemachineDSLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(StatemachineDSLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleStatemachineModel
+entryRuleStatemachineModel 
+:
+{ before(grammarAccess.getStatemachineModelRule()); }
+	 ruleStatemachineModel
+{ after(grammarAccess.getStatemachineModelRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineModel
+ruleStatemachineModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineModelAccess().getPackagesAssignment()); }
+(rule__StatemachineModel__PackagesAssignment)*
+{ after(grammarAccess.getStatemachineModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachinePackage
+entryRuleStatemachinePackage 
+:
+{ before(grammarAccess.getStatemachinePackageRule()); }
+	 ruleStatemachinePackage
+{ after(grammarAccess.getStatemachinePackageRule()); } 
+	 EOF 
+;
+
+// Rule StatemachinePackage
+ruleStatemachinePackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getGroup()); }
+(rule__StatemachinePackage__Group__0)
+{ after(grammarAccess.getStatemachinePackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachine
+entryRuleStatemachine 
+:
+{ before(grammarAccess.getStatemachineRule()); }
+	 ruleStatemachine
+{ after(grammarAccess.getStatemachineRule()); } 
+	 EOF 
+;
+
+// Rule Statemachine
+ruleStatemachine
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup()); }
+(rule__Statemachine__Group__0)
+{ after(grammarAccess.getStatemachineAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineEvent
+entryRuleStatemachineEvent 
+:
+{ before(grammarAccess.getStatemachineEventRule()); }
+	 ruleStatemachineEvent
+{ after(grammarAccess.getStatemachineEventRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineEvent
+ruleStatemachineEvent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineEventAccess().getGroup()); }
+(rule__StatemachineEvent__Group__0)
+{ after(grammarAccess.getStatemachineEventAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineState
+entryRuleStatemachineState 
+:
+{ before(grammarAccess.getStatemachineStateRule()); }
+	 ruleStatemachineState
+{ after(grammarAccess.getStatemachineStateRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineState
+ruleStatemachineState
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getGroup()); }
+(rule__StatemachineState__Group__0)
+{ after(grammarAccess.getStatemachineStateAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineTrigger
+entryRuleStatemachineTrigger 
+:
+{ before(grammarAccess.getStatemachineTriggerRule()); }
+	 ruleStatemachineTrigger
+{ after(grammarAccess.getStatemachineTriggerRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineTrigger
+ruleStatemachineTrigger
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getGroup()); }
+(rule__StatemachineTrigger__Group__0)
+{ after(grammarAccess.getStatemachineTriggerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineAction
+entryRuleStatemachineAction 
+:
+{ before(grammarAccess.getStatemachineActionRule()); }
+	 ruleStatemachineAction
+{ after(grammarAccess.getStatemachineActionRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineAction
+ruleStatemachineAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionAccess().getAlternatives()); }
+(rule__StatemachineAction__Alternatives)
+{ after(grammarAccess.getStatemachineActionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralBlinkRate
+entryRuleStatemachineActionPeripheralBlinkRate 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralBlinkRateRule()); }
+	 ruleStatemachineActionPeripheralBlinkRate
+{ after(grammarAccess.getStatemachineActionPeripheralBlinkRateRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralBlinkRate
+ruleStatemachineActionPeripheralBlinkRate
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getGroup()); }
+(rule__StatemachineActionPeripheralBlinkRate__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralClear
+entryRuleStatemachineActionPeripheralClear 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralClearRule()); }
+	 ruleStatemachineActionPeripheralClear
+{ after(grammarAccess.getStatemachineActionPeripheralClearRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralClear
+ruleStatemachineActionPeripheralClear
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralClearAccess().getGroup()); }
+(rule__StatemachineActionPeripheralClear__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralClearAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralCreateWindow
+entryRuleStatemachineActionPeripheralCreateWindow 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralCreateWindowRule()); }
+	 ruleStatemachineActionPeripheralCreateWindow
+{ after(grammarAccess.getStatemachineActionPeripheralCreateWindowRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralCreateWindow
+ruleStatemachineActionPeripheralCreateWindow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getGroup()); }
+(rule__StatemachineActionPeripheralCreateWindow__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralCursorType
+entryRuleStatemachineActionPeripheralCursorType 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralCursorTypeRule()); }
+	 ruleStatemachineActionPeripheralCursorType
+{ after(grammarAccess.getStatemachineActionPeripheralCursorTypeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralCursorType
+ruleStatemachineActionPeripheralCursorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getGroup()); }
+(rule__StatemachineActionPeripheralCursorType__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDestroyWindow
+entryRuleStatemachineActionPeripheralDestroyWindow 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule()); }
+	 ruleStatemachineActionPeripheralDestroyWindow
+{ after(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDestroyWindow
+ruleStatemachineActionPeripheralDestroyWindow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getGroup()); }
+(rule__StatemachineActionPeripheralDestroyWindow__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDeviceBrightness
+entryRuleStatemachineActionPeripheralDeviceBrightness 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule()); }
+	 ruleStatemachineActionPeripheralDeviceBrightness
+{ after(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDeviceBrightness
+ruleStatemachineActionPeripheralDeviceBrightness
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getGroup()); }
+(rule__StatemachineActionPeripheralDeviceBrightness__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayBitmap
+entryRuleStatemachineActionPeripheralDisplayBitmap 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule()); }
+	 ruleStatemachineActionPeripheralDisplayBitmap
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayBitmap
+ruleStatemachineActionPeripheralDisplayBitmap
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getGroup()); }
+(rule__StatemachineActionPeripheralDisplayBitmap__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayText
+entryRuleStatemachineActionPeripheralDisplayText 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayTextRule()); }
+	 ruleStatemachineActionPeripheralDisplayText
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayTextRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayText
+ruleStatemachineActionPeripheralDisplayText
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getGroup()); }
+(rule__StatemachineActionPeripheralDisplayText__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayTextAt
+entryRuleStatemachineActionPeripheralDisplayTextAt 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule()); }
+	 ruleStatemachineActionPeripheralDisplayTextAt
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayTextAt
+ruleStatemachineActionPeripheralDisplayTextAt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getGroup()); }
+(rule__StatemachineActionPeripheralDisplayTextAt__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralInterCharacterWait
+entryRuleStatemachineActionPeripheralInterCharacterWait 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule()); }
+	 ruleStatemachineActionPeripheralInterCharacterWait
+{ after(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralInterCharacterWait
+ruleStatemachineActionPeripheralInterCharacterWait
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getGroup()); }
+(rule__StatemachineActionPeripheralInterCharacterWait__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeFormat
+entryRuleStatemachineActionPeripheralMarqueeFormat 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule()); }
+	 ruleStatemachineActionPeripheralMarqueeFormat
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeFormat
+ruleStatemachineActionPeripheralMarqueeFormat
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getGroup()); }
+(rule__StatemachineActionPeripheralMarqueeFormat__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeRepeatWait
+entryRuleStatemachineActionPeripheralMarqueeRepeatWait 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule()); }
+	 ruleStatemachineActionPeripheralMarqueeRepeatWait
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeRepeatWait
+ruleStatemachineActionPeripheralMarqueeRepeatWait
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getGroup()); }
+(rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeType
+entryRuleStatemachineActionPeripheralMarqueeType 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule()); }
+	 ruleStatemachineActionPeripheralMarqueeType
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeType
+ruleStatemachineActionPeripheralMarqueeType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getGroup()); }
+(rule__StatemachineActionPeripheralMarqueeType__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeUnitWait
+entryRuleStatemachineActionPeripheralMarqueeUnitWait 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule()); }
+	 ruleStatemachineActionPeripheralMarqueeUnitWait
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeUnitWait
+ruleStatemachineActionPeripheralMarqueeUnitWait
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getGroup()); }
+(rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralScroll
+entryRuleStatemachineActionPeripheralScroll 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralScrollRule()); }
+	 ruleStatemachineActionPeripheralScroll
+{ after(grammarAccess.getStatemachineActionPeripheralScrollRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralScroll
+ruleStatemachineActionPeripheralScroll
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralScrollAccess().getGroup()); }
+(rule__StatemachineActionPeripheralScroll__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralScrollAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralOpenDrawer
+entryRuleStatemachineActionPeripheralOpenDrawer 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule()); }
+	 ruleStatemachineActionPeripheralOpenDrawer
+{ after(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralOpenDrawer
+ruleStatemachineActionPeripheralOpenDrawer
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getGroup()); }
+(rule__StatemachineActionPeripheralOpenDrawer__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintBarcode
+entryRuleStatemachineActionPeripheralPrintBarcode 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule()); }
+	 ruleStatemachineActionPeripheralPrintBarcode
+{ after(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintBarcode
+ruleStatemachineActionPeripheralPrintBarcode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintBarcode__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintBitmap
+entryRuleStatemachineActionPeripheralPrintBitmap 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule()); }
+	 ruleStatemachineActionPeripheralPrintBitmap
+{ after(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintBitmap
+ruleStatemachineActionPeripheralPrintBitmap
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintBitmap__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintCut
+entryRuleStatemachineActionPeripheralPrintCut 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintCutRule()); }
+	 ruleStatemachineActionPeripheralPrintCut
+{ after(grammarAccess.getStatemachineActionPeripheralPrintCutRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintCut
+ruleStatemachineActionPeripheralPrintCut
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintCut__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintNormal
+entryRuleStatemachineActionPeripheralPrintNormal 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintNormalRule()); }
+	 ruleStatemachineActionPeripheralPrintNormal
+{ after(grammarAccess.getStatemachineActionPeripheralPrintNormalRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintNormal
+ruleStatemachineActionPeripheralPrintNormal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintNormal__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintRegisterBitmap
+entryRuleStatemachineActionPeripheralPrintRegisterBitmap 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule()); }
+	 ruleStatemachineActionPeripheralPrintRegisterBitmap
+{ after(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintRegisterBitmap
+ruleStatemachineActionPeripheralPrintRegisterBitmap
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTOpen
+entryRuleStatemachineActionPeripheralPTOpen 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTOpenRule()); }
+	 ruleStatemachineActionPeripheralPTOpen
+{ after(grammarAccess.getStatemachineActionPeripheralPTOpenRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTOpen
+ruleStatemachineActionPeripheralPTOpen
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTOpen__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTClose
+entryRuleStatemachineActionPeripheralPTClose 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTCloseRule()); }
+	 ruleStatemachineActionPeripheralPTClose
+{ after(grammarAccess.getStatemachineActionPeripheralPTCloseRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTClose
+ruleStatemachineActionPeripheralPTClose
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTClose__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTAcknowledge
+entryRuleStatemachineActionPeripheralPTAcknowledge 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule()); }
+	 ruleStatemachineActionPeripheralPTAcknowledge
+{ after(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTAcknowledge
+ruleStatemachineActionPeripheralPTAcknowledge
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTAcknowledge__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTReversal
+entryRuleStatemachineActionPeripheralPTReversal 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTReversalRule()); }
+	 ruleStatemachineActionPeripheralPTReversal
+{ after(grammarAccess.getStatemachineActionPeripheralPTReversalRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTReversal
+ruleStatemachineActionPeripheralPTReversal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTReversal__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTRegistration
+entryRuleStatemachineActionPeripheralPTRegistration 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule()); }
+	 ruleStatemachineActionPeripheralPTRegistration
+{ after(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTRegistration
+ruleStatemachineActionPeripheralPTRegistration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTRegistration__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTAuthorization
+entryRuleStatemachineActionPeripheralPTAuthorization 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule()); }
+	 ruleStatemachineActionPeripheralPTAuthorization
+{ after(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTAuthorization
+ruleStatemachineActionPeripheralPTAuthorization
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTAuthorization__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTResponse
+entryRuleStatemachineActionPeripheralPTResponse 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPTResponseRule()); }
+	 ruleStatemachineActionPeripheralPTResponse
+{ after(grammarAccess.getStatemachineActionPeripheralPTResponseRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTResponse
+ruleStatemachineActionPeripheralPTResponse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPTResponse__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintReport
+entryRuleStatemachineActionPeripheralPrintReport 
+:
+{ before(grammarAccess.getStatemachineActionPeripheralPrintReportRule()); }
+	 ruleStatemachineActionPeripheralPrintReport
+{ after(grammarAccess.getStatemachineActionPeripheralPrintReportRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintReport
+ruleStatemachineActionPeripheralPrintReport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getGroup()); }
+(rule__StatemachineActionPeripheralPrintReport__Group__0)
+{ after(grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSource
+entryRuleStatemachineActionFieldSource 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceRule()); }
+	 ruleStatemachineActionFieldSource
+{ after(grammarAccess.getStatemachineActionFieldSourceRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSource
+ruleStatemachineActionFieldSource
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getAlternatives()); }
+(rule__StatemachineActionFieldSource__Alternatives)
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineOperation
+entryRuleStatemachineOperation 
+:
+{ before(grammarAccess.getStatemachineOperationRule()); }
+	 ruleStatemachineOperation
+{ after(grammarAccess.getStatemachineOperationRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineOperation
+ruleStatemachineOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineOperationAccess().getGroup()); }
+(rule__StatemachineOperation__Group__0)
+{ after(grammarAccess.getStatemachineOperationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineGuard
+entryRuleStatemachineGuard 
+:
+{ before(grammarAccess.getStatemachineGuardRule()); }
+	 ruleStatemachineGuard
+{ after(grammarAccess.getStatemachineGuardRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineGuard
+ruleStatemachineGuard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineGuardAccess().getGroup()); }
+(rule__StatemachineGuard__Group__0)
+{ after(grammarAccess.getStatemachineGuardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineFunction
+entryRuleStatemachineFunction 
+:
+{ before(grammarAccess.getStatemachineFunctionRule()); }
+	 ruleStatemachineFunction
+{ after(grammarAccess.getStatemachineFunctionRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineFunction
+ruleStatemachineFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineFunctionAccess().getGroup()); }
+(rule__StatemachineFunction__Group__0)
+{ after(grammarAccess.getStatemachineFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineStorage
+entryRuleStatemachineStorage 
+:
+{ before(grammarAccess.getStatemachineStorageRule()); }
+	 ruleStatemachineStorage
+{ after(grammarAccess.getStatemachineStorageRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineStorage
+ruleStatemachineStorage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineStorageAccess().getGroup()); }
+(rule__StatemachineStorage__Group__0)
+{ after(grammarAccess.getStatemachineStorageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineStorageRetrieve
+entryRuleStatemachineStorageRetrieve 
+:
+{ before(grammarAccess.getStatemachineStorageRetrieveRule()); }
+	 ruleStatemachineStorageRetrieve
+{ after(grammarAccess.getStatemachineStorageRetrieveRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineStorageRetrieve
+ruleStatemachineStorageRetrieve
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineStorageRetrieveAccess().getGroup()); }
+(rule__StatemachineStorageRetrieve__Group__0)
+{ after(grammarAccess.getStatemachineStorageRetrieveAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionConditionalTransition
+entryRuleStatemachineActionConditionalTransition 
+:
+{ before(grammarAccess.getStatemachineActionConditionalTransitionRule()); }
+	 ruleStatemachineActionConditionalTransition
+{ after(grammarAccess.getStatemachineActionConditionalTransitionRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionConditionalTransition
+ruleStatemachineActionConditionalTransition
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionConditionalTransitionAccess().getGroup()); }
+(rule__StatemachineActionConditionalTransition__Group__0)
+{ after(grammarAccess.getStatemachineActionConditionalTransitionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceString
+entryRuleStatemachineActionFieldSourceString 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceStringRule()); }
+	 ruleStatemachineActionFieldSourceString
+{ after(grammarAccess.getStatemachineActionFieldSourceStringRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceString
+ruleStatemachineActionFieldSourceString
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceStringAccess().getTextAssignment()); }
+(rule__StatemachineActionFieldSourceString__TextAssignment)
+{ after(grammarAccess.getStatemachineActionFieldSourceStringAccess().getTextAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceNumber
+entryRuleStatemachineActionFieldSourceNumber 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceNumberRule()); }
+	 ruleStatemachineActionFieldSourceNumber
+{ after(grammarAccess.getStatemachineActionFieldSourceNumberRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceNumber
+ruleStatemachineActionFieldSourceNumber
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceNumberAccess().getValueAssignment()); }
+(rule__StatemachineActionFieldSourceNumber__ValueAssignment)
+{ after(grammarAccess.getStatemachineActionFieldSourceNumberAccess().getValueAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvaluate
+entryRuleStatemachineActionFieldSourceEvaluate 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceEvaluateRule()); }
+	 ruleStatemachineActionFieldSourceEvaluate
+{ after(grammarAccess.getStatemachineActionFieldSourceEvaluateRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvaluate
+ruleStatemachineActionFieldSourceEvaluate
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceEvaluateAccess().getEvaluationtypeAssignment()); }
+(rule__StatemachineActionFieldSourceEvaluate__EvaluationtypeAssignment)
+{ after(grammarAccess.getStatemachineActionFieldSourceEvaluateAccess().getEvaluationtypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvent
+entryRuleStatemachineActionFieldSourceEvent 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceEventRule()); }
+	 ruleStatemachineActionFieldSourceEvent
+{ after(grammarAccess.getStatemachineActionFieldSourceEventRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvent
+ruleStatemachineActionFieldSourceEvent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceEventAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceEvent__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceEventAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceTranslate
+entryRuleStatemachineActionFieldSourceTranslate 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceTranslateRule()); }
+	 ruleStatemachineActionFieldSourceTranslate
+{ after(grammarAccess.getStatemachineActionFieldSourceTranslateRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceTranslate
+ruleStatemachineActionFieldSourceTranslate
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceTranslate__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceDtoAttribute
+entryRuleStatemachineActionFieldSourceDtoAttribute 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule()); }
+	 ruleStatemachineActionFieldSourceDtoAttribute
+{ after(grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceDtoAttribute
+ruleStatemachineActionFieldSourceDtoAttribute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceDtoAttribute__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceMore
+entryRuleStatemachineActionFieldSourceMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreRule()); }
+	 ruleStatemachineActionFieldSourceMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceMore
+ruleStatemachineActionFieldSourceMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getAlternatives()); }
+(rule__StatemachineActionFieldSourceMore__Alternatives)
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceStringMore
+entryRuleStatemachineActionFieldSourceStringMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceStringMoreRule()); }
+	 ruleStatemachineActionFieldSourceStringMore
+{ after(grammarAccess.getStatemachineActionFieldSourceStringMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceStringMore
+ruleStatemachineActionFieldSourceStringMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceStringMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceNumberMore
+entryRuleStatemachineActionFieldSourceNumberMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceNumberMoreRule()); }
+	 ruleStatemachineActionFieldSourceNumberMore
+{ after(grammarAccess.getStatemachineActionFieldSourceNumberMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceNumberMore
+ruleStatemachineActionFieldSourceNumberMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceNumberMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvaluateMore
+entryRuleStatemachineActionFieldSourceEvaluateMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreRule()); }
+	 ruleStatemachineActionFieldSourceEvaluateMore
+{ after(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvaluateMore
+ruleStatemachineActionFieldSourceEvaluateMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceEvaluateMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceTranslateMore
+entryRuleStatemachineActionFieldSourceTranslateMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceTranslateMoreRule()); }
+	 ruleStatemachineActionFieldSourceTranslateMore
+{ after(grammarAccess.getStatemachineActionFieldSourceTranslateMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceTranslateMore
+ruleStatemachineActionFieldSourceTranslateMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceTranslateMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldGetMore
+entryRuleStatemachineActionFieldGetMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldGetMoreRule()); }
+	 ruleStatemachineActionFieldGetMore
+{ after(grammarAccess.getStatemachineActionFieldGetMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldGetMore
+ruleStatemachineActionFieldGetMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldGetMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldGetMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldGetMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineOperationMore
+entryRuleStatemachineOperationMore 
+:
+{ before(grammarAccess.getStatemachineOperationMoreRule()); }
+	 ruleStatemachineOperationMore
+{ after(grammarAccess.getStatemachineOperationMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineOperationMore
+ruleStatemachineOperationMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineOperationMoreAccess().getGroup()); }
+(rule__StatemachineOperationMore__Group__0)
+{ after(grammarAccess.getStatemachineOperationMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineStorageRetrieveMore
+entryRuleStatemachineStorageRetrieveMore 
+:
+{ before(grammarAccess.getStatemachineStorageRetrieveMoreRule()); }
+	 ruleStatemachineStorageRetrieveMore
+{ after(grammarAccess.getStatemachineStorageRetrieveMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineStorageRetrieveMore
+ruleStatemachineStorageRetrieveMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getGroup()); }
+(rule__StatemachineStorageRetrieveMore__Group__0)
+{ after(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceDtoAttributeMore
+entryRuleStatemachineActionFieldSourceDtoAttributeMore 
+:
+{ before(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule()); }
+	 ruleStatemachineActionFieldSourceDtoAttributeMore
+{ after(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceDtoAttributeMore
+ruleStatemachineActionFieldSourceDtoAttributeMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getGroup()); }
+(rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldConcatenation
+entryRuleStatemachineActionFieldConcatenation 
+:
+{ before(grammarAccess.getStatemachineActionFieldConcatenationRule()); }
+	 ruleStatemachineActionFieldConcatenation
+{ after(grammarAccess.getStatemachineActionFieldConcatenationRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldConcatenation
+ruleStatemachineActionFieldConcatenation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldConcatenationAccess().getGroup()); }
+(rule__StatemachineActionFieldConcatenation__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldConcatenationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineOperationParameter
+entryRuleStatemachineOperationParameter 
+:
+{ before(grammarAccess.getStatemachineOperationParameterRule()); }
+	 ruleStatemachineOperationParameter
+{ after(grammarAccess.getStatemachineOperationParameterRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineOperationParameter
+ruleStatemachineOperationParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineOperationParameterAccess().getSourceAssignment()); }
+(rule__StatemachineOperationParameter__SourceAssignment)
+{ after(grammarAccess.getStatemachineOperationParameterAccess().getSourceAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineOperationParameterMore
+entryRuleStatemachineOperationParameterMore 
+:
+{ before(grammarAccess.getStatemachineOperationParameterMoreRule()); }
+	 ruleStatemachineOperationParameterMore
+{ after(grammarAccess.getStatemachineOperationParameterMoreRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineOperationParameterMore
+ruleStatemachineOperationParameterMore
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineOperationParameterMoreAccess().getGroup()); }
+(rule__StatemachineOperationParameterMore__Group__0)
+{ after(grammarAccess.getStatemachineOperationParameterMoreAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSet
+entryRuleStatemachineActionFieldSet 
+:
+{ before(grammarAccess.getStatemachineActionFieldSetRule()); }
+	 ruleStatemachineActionFieldSet
+{ after(grammarAccess.getStatemachineActionFieldSetRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSet
+ruleStatemachineActionFieldSet
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldSetAccess().getGroup()); }
+(rule__StatemachineActionFieldSet__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldSetAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldClear
+entryRuleStatemachineActionFieldClear 
+:
+{ before(grammarAccess.getStatemachineActionFieldClearRule()); }
+	 ruleStatemachineActionFieldClear
+{ after(grammarAccess.getStatemachineActionFieldClearRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldClear
+ruleStatemachineActionFieldClear
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldClearAccess().getGroup()); }
+(rule__StatemachineActionFieldClear__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldClearAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldGet
+entryRuleStatemachineActionFieldGet 
+:
+{ before(grammarAccess.getStatemachineActionFieldGetRule()); }
+	 ruleStatemachineActionFieldGet
+{ after(grammarAccess.getStatemachineActionFieldGetRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldGet
+ruleStatemachineActionFieldGet
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldGetAccess().getGroup()); }
+(rule__StatemachineActionFieldGet__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldGetAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionFieldRemove
+entryRuleStatemachineActionFieldRemove 
+:
+{ before(grammarAccess.getStatemachineActionFieldRemoveRule()); }
+	 ruleStatemachineActionFieldRemove
+{ after(grammarAccess.getStatemachineActionFieldRemoveRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldRemove
+ruleStatemachineActionFieldRemove
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionFieldRemoveAccess().getGroup()); }
+(rule__StatemachineActionFieldRemove__Group__0)
+{ after(grammarAccess.getStatemachineActionFieldRemoveAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionItemVisible
+entryRuleStatemachineActionItemVisible 
+:
+{ before(grammarAccess.getStatemachineActionItemVisibleRule()); }
+	 ruleStatemachineActionItemVisible
+{ after(grammarAccess.getStatemachineActionItemVisibleRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionItemVisible
+ruleStatemachineActionItemVisible
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionItemVisibleAccess().getGroup()); }
+(rule__StatemachineActionItemVisible__Group__0)
+{ after(grammarAccess.getStatemachineActionItemVisibleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionItemInvisible
+entryRuleStatemachineActionItemInvisible 
+:
+{ before(grammarAccess.getStatemachineActionItemInvisibleRule()); }
+	 ruleStatemachineActionItemInvisible
+{ after(grammarAccess.getStatemachineActionItemInvisibleRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionItemInvisible
+ruleStatemachineActionItemInvisible
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionItemInvisibleAccess().getGroup()); }
+(rule__StatemachineActionItemInvisible__Group__0)
+{ after(grammarAccess.getStatemachineActionItemInvisibleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionButtonCaption
+entryRuleStatemachineActionButtonCaption 
+:
+{ before(grammarAccess.getStatemachineActionButtonCaptionRule()); }
+	 ruleStatemachineActionButtonCaption
+{ after(grammarAccess.getStatemachineActionButtonCaptionRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionButtonCaption
+ruleStatemachineActionButtonCaption
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionButtonCaptionAccess().getGroup()); }
+(rule__StatemachineActionButtonCaption__Group__0)
+{ after(grammarAccess.getStatemachineActionButtonCaptionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionButtonImage
+entryRuleStatemachineActionButtonImage 
+:
+{ before(grammarAccess.getStatemachineActionButtonImageRule()); }
+	 ruleStatemachineActionButtonImage
+{ after(grammarAccess.getStatemachineActionButtonImageRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionButtonImage
+ruleStatemachineActionButtonImage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionButtonImageAccess().getGroup()); }
+(rule__StatemachineActionButtonImage__Group__0)
+{ after(grammarAccess.getStatemachineActionButtonImageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionDTOFind
+entryRuleStatemachineActionDTOFind 
+:
+{ before(grammarAccess.getStatemachineActionDTOFindRule()); }
+	 ruleStatemachineActionDTOFind
+{ after(grammarAccess.getStatemachineActionDTOFindRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionDTOFind
+ruleStatemachineActionDTOFind
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionDTOFindAccess().getGroup()); }
+(rule__StatemachineActionDTOFind__Group__0)
+{ after(grammarAccess.getStatemachineActionDTOFindAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineActionScheduler
+entryRuleStatemachineActionScheduler 
+:
+{ before(grammarAccess.getStatemachineActionSchedulerRule()); }
+	 ruleStatemachineActionScheduler
+{ after(grammarAccess.getStatemachineActionSchedulerRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineActionScheduler
+ruleStatemachineActionScheduler
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineActionSchedulerAccess().getGroup()); }
+(rule__StatemachineActionScheduler__Group__0)
+{ after(grammarAccess.getStatemachineActionSchedulerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControl
+entryRuleStatemachineControl 
+:
+{ before(grammarAccess.getStatemachineControlRule()); }
+	 ruleStatemachineControl
+{ after(grammarAccess.getStatemachineControlRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControl
+ruleStatemachineControl
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlAccess().getAlternatives()); }
+(rule__StatemachineControl__Alternatives)
+{ after(grammarAccess.getStatemachineControlAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButton
+entryRuleStatemachineControlButton 
+:
+{ before(grammarAccess.getStatemachineControlButtonRule()); }
+	 ruleStatemachineControlButton
+{ after(grammarAccess.getStatemachineControlButtonRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButton
+ruleStatemachineControlButton
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAccess().getGroup()); }
+(rule__StatemachineControlButton__Group__0)
+{ after(grammarAccess.getStatemachineControlButtonAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlField
+entryRuleStatemachineControlField 
+:
+{ before(grammarAccess.getStatemachineControlFieldRule()); }
+	 ruleStatemachineControlField
+{ after(grammarAccess.getStatemachineControlFieldRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlField
+ruleStatemachineControlField
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlFieldAccess().getGroup()); }
+(rule__StatemachineControlField__Group__0)
+{ after(grammarAccess.getStatemachineControlFieldAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlDTO
+entryRuleStatemachineControlDTO 
+:
+{ before(grammarAccess.getStatemachineControlDTORule()); }
+	 ruleStatemachineControlDTO
+{ after(grammarAccess.getStatemachineControlDTORule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlDTO
+ruleStatemachineControlDTO
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlDTOAccess().getGroup()); }
+(rule__StatemachineControlDTO__Group__0)
+{ after(grammarAccess.getStatemachineControlDTOAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlScheduler
+entryRuleStatemachineControlScheduler 
+:
+{ before(grammarAccess.getStatemachineControlSchedulerRule()); }
+	 ruleStatemachineControlScheduler
+{ after(grammarAccess.getStatemachineControlSchedulerRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlScheduler
+ruleStatemachineControlScheduler
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlSchedulerAccess().getGroup()); }
+(rule__StatemachineControlScheduler__Group__0)
+{ after(grammarAccess.getStatemachineControlSchedulerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDeviceLineDisplay
+entryRuleStatemachinePeripheralDeviceLineDisplay 
+:
+{ before(grammarAccess.getStatemachinePeripheralDeviceLineDisplayRule()); }
+	 ruleStatemachinePeripheralDeviceLineDisplay
+{ after(grammarAccess.getStatemachinePeripheralDeviceLineDisplayRule()); } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDeviceLineDisplay
+ruleStatemachinePeripheralDeviceLineDisplay
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getGroup()); }
+(rule__StatemachinePeripheralDeviceLineDisplay__Group__0)
+{ after(grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDevicePOSPrinter
+entryRuleStatemachinePeripheralDevicePOSPrinter 
+:
+{ before(grammarAccess.getStatemachinePeripheralDevicePOSPrinterRule()); }
+	 ruleStatemachinePeripheralDevicePOSPrinter
+{ after(grammarAccess.getStatemachinePeripheralDevicePOSPrinterRule()); } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDevicePOSPrinter
+ruleStatemachinePeripheralDevicePOSPrinter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getGroup()); }
+(rule__StatemachinePeripheralDevicePOSPrinter__Group__0)
+{ after(grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDeviceCashDrawer
+entryRuleStatemachinePeripheralDeviceCashDrawer 
+:
+{ before(grammarAccess.getStatemachinePeripheralDeviceCashDrawerRule()); }
+	 ruleStatemachinePeripheralDeviceCashDrawer
+{ after(grammarAccess.getStatemachinePeripheralDeviceCashDrawerRule()); } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDeviceCashDrawer
+ruleStatemachinePeripheralDeviceCashDrawer
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getGroup()); }
+(rule__StatemachinePeripheralDeviceCashDrawer__Group__0)
+{ after(grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDevicePT
+entryRuleStatemachinePeripheralDevicePT 
+:
+{ before(grammarAccess.getStatemachinePeripheralDevicePTRule()); }
+	 ruleStatemachinePeripheralDevicePT
+{ after(grammarAccess.getStatemachinePeripheralDevicePTRule()); } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDevicePT
+ruleStatemachinePeripheralDevicePT
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachinePeripheralDevicePTAccess().getGroup()); }
+(rule__StatemachinePeripheralDevicePT__Group__0)
+{ after(grammarAccess.getStatemachinePeripheralDevicePTAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlPeripheral
+entryRuleStatemachineControlPeripheral 
+:
+{ before(grammarAccess.getStatemachineControlPeripheralRule()); }
+	 ruleStatemachineControlPeripheral
+{ after(grammarAccess.getStatemachineControlPeripheralRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlPeripheral
+ruleStatemachineControlPeripheral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlPeripheralAccess().getGroup()); }
+(rule__StatemachineControlPeripheral__Group__0)
+{ after(grammarAccess.getStatemachineControlPeripheralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttribute
+entryRuleStatemachineControlButtonAttribute 
+:
+{ before(grammarAccess.getStatemachineControlButtonAttributeRule()); }
+	 ruleStatemachineControlButtonAttribute
+{ after(grammarAccess.getStatemachineControlButtonAttributeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttribute
+ruleStatemachineControlButtonAttribute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeAccess().getGroup()); }
+(rule__StatemachineControlButtonAttribute__Group__0)
+{ after(grammarAccess.getStatemachineControlButtonAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEvent
+entryRuleStatemachineControlButtonAttributeEvent 
+:
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventRule()); }
+	 ruleStatemachineControlButtonAttributeEvent
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEvent
+ruleStatemachineControlButtonAttributeEvent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getAlternatives()); }
+(rule__StatemachineControlButtonAttributeEvent__Alternatives)
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventKeyboard
+entryRuleStatemachineControlButtonAttributeEventKeyboard 
+:
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardRule()); }
+	 ruleStatemachineControlButtonAttributeEventKeyboard
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventKeyboard
+ruleStatemachineControlButtonAttributeEventKeyboard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getGroup()); }
+(rule__StatemachineControlButtonAttributeEventKeyboard__Group__0)
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventIdentity
+entryRuleStatemachineControlButtonAttributeEventIdentity 
+:
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventIdentityRule()); }
+	 ruleStatemachineControlButtonAttributeEventIdentity
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventIdentityRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventIdentity
+ruleStatemachineControlButtonAttributeEventIdentity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getGroup()); }
+(rule__StatemachineControlButtonAttributeEventIdentity__Group__0)
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventEvent
+entryRuleStatemachineControlButtonAttributeEventEvent 
+:
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventEventRule()); }
+	 ruleStatemachineControlButtonAttributeEventEvent
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventEventRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventEvent
+ruleStatemachineControlButtonAttributeEventEvent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getGroup()); }
+(rule__StatemachineControlButtonAttributeEventEvent__Group__0)
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlFieldAttribute
+entryRuleStatemachineControlFieldAttribute 
+:
+{ before(grammarAccess.getStatemachineControlFieldAttributeRule()); }
+	 ruleStatemachineControlFieldAttribute
+{ after(grammarAccess.getStatemachineControlFieldAttributeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlFieldAttribute
+ruleStatemachineControlFieldAttribute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlFieldAttributeAccess().getGroup()); }
+(rule__StatemachineControlFieldAttribute__Group__0)
+{ after(grammarAccess.getStatemachineControlFieldAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlFieldLayout
+entryRuleStatemachineControlFieldLayout 
+:
+{ before(grammarAccess.getStatemachineControlFieldLayoutRule()); }
+	 ruleStatemachineControlFieldLayout
+{ after(grammarAccess.getStatemachineControlFieldLayoutRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlFieldLayout
+ruleStatemachineControlFieldLayout
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlFieldLayoutAccess().getGroup()); }
+(rule__StatemachineControlFieldLayout__Group__0)
+{ after(grammarAccess.getStatemachineControlFieldLayoutAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlDTOAttribute
+entryRuleStatemachineControlDTOAttribute 
+:
+{ before(grammarAccess.getStatemachineControlDTOAttributeRule()); }
+	 ruleStatemachineControlDTOAttribute
+{ after(grammarAccess.getStatemachineControlDTOAttributeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlDTOAttribute
+ruleStatemachineControlDTOAttribute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlDTOAttributeAccess().getGroup()); }
+(rule__StatemachineControlDTOAttribute__Group__0)
+{ after(grammarAccess.getStatemachineControlDTOAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineControlSchedulerAttribute
+entryRuleStatemachineControlSchedulerAttribute 
+:
+{ before(grammarAccess.getStatemachineControlSchedulerAttributeRule()); }
+	 ruleStatemachineControlSchedulerAttribute
+{ after(grammarAccess.getStatemachineControlSchedulerAttributeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineControlSchedulerAttribute
+ruleStatemachineControlSchedulerAttribute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getGroup()); }
+(rule__StatemachineControlSchedulerAttribute__Group__0)
+{ after(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineDTOType
+entryRuleStatemachineDTOType 
+:
+{ before(grammarAccess.getStatemachineDTOTypeRule()); }
+	 ruleStatemachineDTOType
+{ after(grammarAccess.getStatemachineDTOTypeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineDTOType
+ruleStatemachineDTOType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineDTOTypeAccess().getAttributeTypeAssignment()); }
+(rule__StatemachineDTOType__AttributeTypeAssignment)
+{ after(grammarAccess.getStatemachineDTOTypeAccess().getAttributeTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineFieldType
+entryRuleStatemachineFieldType 
+:
+{ before(grammarAccess.getStatemachineFieldTypeRule()); }
+	 ruleStatemachineFieldType
+{ after(grammarAccess.getStatemachineFieldTypeRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineFieldType
+ruleStatemachineFieldType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineFieldTypeAccess().getAttributeTypeAssignment()); }
+(rule__StatemachineFieldType__AttributeTypeAssignment)
+{ after(grammarAccess.getStatemachineFieldTypeAccess().getAttributeTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineImport
+entryRuleStatemachineImport 
+:
+{ before(grammarAccess.getStatemachineImportRule()); }
+	 ruleStatemachineImport
+{ after(grammarAccess.getStatemachineImportRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineImport
+ruleStatemachineImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineImportAccess().getGroup()); }
+(rule__StatemachineImport__Group__0)
+{ after(grammarAccess.getStatemachineImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStatemachineQualifiedNameWithWildCard
+entryRuleStatemachineQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getStatemachineQualifiedNameWithWildCardRule()); }
+	 ruleStatemachineQualifiedNameWithWildCard
+{ after(grammarAccess.getStatemachineQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule StatemachineQualifiedNameWithWildCard
+ruleStatemachineQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__StatemachineQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().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 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 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 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 entryRuleUnsignedNumber
+entryRuleUnsignedNumber 
+:
+{ before(grammarAccess.getUnsignedNumberRule()); }
+	 ruleUnsignedNumber
+{ after(grammarAccess.getUnsignedNumberRule()); } 
+	 EOF 
+;
+
+// Rule UnsignedNumber
+ruleUnsignedNumber
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnsignedNumberAccess().getGroup()); }
+(rule__UnsignedNumber__Group__0)
+{ after(grammarAccess.getUnsignedNumberAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation 
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+(rule__XAnnotation__Group__0)
+{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair 
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+(rule__XAnnotationElementValuePair__Group__0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList 
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+(rule__XAnnotationElementValueOrCommaList__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue 
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+(rule__XAnnotationElementValue__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression 
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+(rule__XAnnotationOrExpression__Alternatives)
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression 
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	ruleXAssignment
+{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment 
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+(rule__XAssignment__Alternatives)
+{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign 
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+
+	'=' 
+
+{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign 
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+(rule__OpMultiAssign__Alternatives)
+{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression 
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+(rule__XOrExpression__Group__0)
+{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr 
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+
+	'||' 
+
+{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression 
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+(rule__XAndExpression__Group__0)
+{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd 
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+
+	'&&' 
+
+{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression 
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+(rule__XEqualityExpression__Group__0)
+{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality 
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+(rule__OpEquality__Alternatives)
+{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression 
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+(rule__XRelationalExpression__Group__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare 
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+(rule__OpCompare__Alternatives)
+{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression 
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+(rule__XOtherOperatorExpression__Group__0)
+{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther 
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+(rule__OpOther__Alternatives)
+{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression 
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+(rule__XAdditiveExpression__Group__0)
+{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd 
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+(rule__OpAdd__Alternatives)
+{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression 
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+(rule__XMultiplicativeExpression__Group__0)
+{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti 
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+(rule__OpMulti__Alternatives)
+{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation 
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+(rule__XUnaryOperation__Alternatives)
+{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary 
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+(rule__OpUnary__Alternatives)
+{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression 
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+(rule__XCastedExpression__Group__0)
+{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation 
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+(rule__XPostfixOperation__Group__0)
+{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix 
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+(rule__OpPostfix__Alternatives)
+{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall 
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+(rule__XMemberFeatureCall__Group__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression 
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+(rule__XPrimaryExpression__Alternatives)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral 
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+(rule__XLiteral__Alternatives)
+{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral 
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+(rule__XCollectionLiteral__Alternatives)
+{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral 
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+(rule__XSetLiteral__Group__0)
+{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral 
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+(rule__XListLiteral__Group__0)
+{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure 
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXClosureAccess().getGroup()); }
+(rule__XClosure__Group__0)
+{ after(grammarAccess.getXClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure 
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+(rule__XExpressionInClosure__Group__0)
+{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure 
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+(rule__XShortClosure__Group__0)
+{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression 
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+(rule__XParenthesizedExpression__Group__0)
+{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression 
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+(rule__XIfExpression__Group__0)
+{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression 
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+(rule__XSwitchExpression__Group__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart 
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+(rule__XCasePart__Group__0)
+{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression 
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+(rule__XForLoopExpression__Group__0)
+{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression 
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+(rule__XBasicForLoopExpression__Group__0)
+{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression 
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+(rule__XWhileExpression__Group__0)
+{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression 
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+(rule__XDoWhileExpression__Group__0)
+{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression 
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+(rule__XBlockExpression__Group__0)
+{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration 
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+(rule__XExpressionOrVarDeclaration__Alternatives)
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration 
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+(rule__XVariableDeclaration__Group__0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter 
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+(rule__JvmFormalParameter__Group__0)
+{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter 
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+(rule__FullJvmFormalParameter__Group__0)
+{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall 
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+(rule__XFeatureCall__Group__0)
+{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID 
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+(rule__FeatureCallID__Alternatives)
+{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper 
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+(rule__IdOrSuper__Alternatives)
+{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall 
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+(rule__XConstructorCall__Group__0)
+{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral 
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+(rule__XBooleanLiteral__Group__0)
+{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral 
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+(rule__XNullLiteral__Group__0)
+{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral 
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+(rule__XNumberLiteral__Group__0)
+{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral 
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+(rule__XStringLiteral__Group__0)
+{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral 
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+(rule__XTypeLiteral__Group__0)
+{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression 
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+(rule__XThrowExpression__Group__0)
+{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression 
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+(rule__XReturnExpression__Group__0)
+{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression 
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+(rule__XTryCatchFinallyExpression__Group__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression 
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+(rule__XSynchronizedExpression__Group__0)
+{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause 
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+(rule__XCatchClause__Group__0)
+{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule 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 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 StatemachineInternalType
+ruleStatemachineInternalType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getAlternatives()); }
+(rule__StatemachineInternalType__Alternatives)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineControlButtonEventType
+ruleStatemachineControlButtonEventType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineControlButtonEventTypeAccess().getAlternatives()); }
+(rule__StatemachineControlButtonEventType__Alternatives)
+{ after(grammarAccess.getStatemachineControlButtonEventTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineEvaluationType
+ruleStatemachineEvaluationType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getAlternatives()); }
+(rule__StatemachineEvaluationType__Alternatives)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineUserMessageType
+ruleStatemachineUserMessageType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getAlternatives()); }
+(rule__StatemachineUserMessageType__Alternatives)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineLineDisplayCursorType
+ruleStatemachineLineDisplayCursorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getAlternatives()); }
+(rule__StatemachineLineDisplayCursorType__Alternatives)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineLineDisplayMarqueeType
+ruleStatemachineLineDisplayMarqueeType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getAlternatives()); }
+(rule__StatemachineLineDisplayMarqueeType__Alternatives)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineLineDisplayMarqueeFormat
+ruleStatemachineLineDisplayMarqueeFormat
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getAlternatives()); }
+(rule__StatemachineLineDisplayMarqueeFormat__Alternatives)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineLineDisplayTextType
+ruleStatemachineLineDisplayTextType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getAlternatives()); }
+(rule__StatemachineLineDisplayTextType__Alternatives)
+{ after(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachineLineDisplayScrollTextType
+ruleStatemachineLineDisplayScrollTextType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getAlternatives()); }
+(rule__StatemachineLineDisplayScrollTextType__Alternatives)
+{ after(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule StatemachinePOSPrinterBarcodeType
+ruleStatemachinePOSPrinterBarcodeType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getAlternatives()); }
+(rule__StatemachinePOSPrinterBarcodeType__Alternatives)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__StatemachineAction__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralBlinkRateParserRuleCall_0()); }
+	ruleStatemachineActionPeripheralBlinkRate
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralBlinkRateParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralClearParserRuleCall_1()); }
+	ruleStatemachineActionPeripheralClear
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralClearParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCreateWindowParserRuleCall_2()); }
+	ruleStatemachineActionPeripheralCreateWindow
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCreateWindowParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCursorTypeParserRuleCall_3()); }
+	ruleStatemachineActionPeripheralCursorType
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCursorTypeParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDestroyWindowParserRuleCall_4()); }
+	ruleStatemachineActionPeripheralDestroyWindow
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDestroyWindowParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5()); }
+	ruleStatemachineActionPeripheralDeviceBrightness
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayBitmapParserRuleCall_6()); }
+	ruleStatemachineActionPeripheralDisplayBitmap
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayBitmapParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextParserRuleCall_7()); }
+	ruleStatemachineActionPeripheralDisplayText
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextAtParserRuleCall_8()); }
+	ruleStatemachineActionPeripheralDisplayTextAt
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextAtParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9()); }
+	ruleStatemachineActionPeripheralInterCharacterWait
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeFormatParserRuleCall_10()); }
+	ruleStatemachineActionPeripheralMarqueeFormat
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeFormatParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11()); }
+	ruleStatemachineActionPeripheralMarqueeRepeatWait
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeTypeParserRuleCall_12()); }
+	ruleStatemachineActionPeripheralMarqueeType
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeTypeParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13()); }
+	ruleStatemachineActionPeripheralMarqueeUnitWait
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralScrollParserRuleCall_14()); }
+	ruleStatemachineActionPeripheralScroll
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralScrollParserRuleCall_14()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralOpenDrawerParserRuleCall_15()); }
+	ruleStatemachineActionPeripheralOpenDrawer
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralOpenDrawerParserRuleCall_15()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBarcodeParserRuleCall_16()); }
+	ruleStatemachineActionPeripheralPrintBarcode
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBarcodeParserRuleCall_16()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBitmapParserRuleCall_17()); }
+	ruleStatemachineActionPeripheralPrintBitmap
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBitmapParserRuleCall_17()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintCutParserRuleCall_18()); }
+	ruleStatemachineActionPeripheralPrintCut
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintCutParserRuleCall_18()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintNormalParserRuleCall_19()); }
+	ruleStatemachineActionPeripheralPrintNormal
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintNormalParserRuleCall_19()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20()); }
+	ruleStatemachineActionPeripheralPrintRegisterBitmap
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTOpenParserRuleCall_21()); }
+	ruleStatemachineActionPeripheralPTOpen
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTOpenParserRuleCall_21()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTCloseParserRuleCall_22()); }
+	ruleStatemachineActionPeripheralPTClose
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTCloseParserRuleCall_22()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23()); }
+	ruleStatemachineActionPeripheralPTAcknowledge
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTReversalParserRuleCall_24()); }
+	ruleStatemachineActionPeripheralPTReversal
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTReversalParserRuleCall_24()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTRegistrationParserRuleCall_25()); }
+	ruleStatemachineActionPeripheralPTRegistration
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTRegistrationParserRuleCall_25()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAuthorizationParserRuleCall_26()); }
+	ruleStatemachineActionPeripheralPTAuthorization
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAuthorizationParserRuleCall_26()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintReportParserRuleCall_27()); }
+	ruleStatemachineActionPeripheralPrintReport
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintReportParserRuleCall_27()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldSetParserRuleCall_28()); }
+	ruleStatemachineActionFieldSet
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldSetParserRuleCall_28()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldRemoveParserRuleCall_29()); }
+	ruleStatemachineActionFieldRemove
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldRemoveParserRuleCall_29()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemVisibleParserRuleCall_30()); }
+	ruleStatemachineActionItemVisible
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemVisibleParserRuleCall_30()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemInvisibleParserRuleCall_31()); }
+	ruleStatemachineActionItemInvisible
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemInvisibleParserRuleCall_31()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldClearParserRuleCall_32()); }
+	ruleStatemachineActionFieldClear
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldClearParserRuleCall_32()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonCaptionParserRuleCall_33()); }
+	ruleStatemachineActionButtonCaption
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonCaptionParserRuleCall_33()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonImageParserRuleCall_34()); }
+	ruleStatemachineActionButtonImage
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonImageParserRuleCall_34()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionDTOFindParserRuleCall_35()); }
+	ruleStatemachineActionDTOFind
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionDTOFindParserRuleCall_35()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineStorageParserRuleCall_36()); }
+	ruleStatemachineStorage
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineStorageParserRuleCall_36()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionSchedulerParserRuleCall_37()); }
+	ruleStatemachineActionScheduler
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionSchedulerParserRuleCall_37()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineOperationParserRuleCall_38()); }
+	ruleStatemachineOperation
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineOperationParserRuleCall_38()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionAccess().getStatemachineActionConditionalTransitionParserRuleCall_39()); }
+	ruleStatemachineActionConditionalTransition
+{ after(grammarAccess.getStatemachineActionAccess().getStatemachineActionConditionalTransitionParserRuleCall_39()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineActionFieldSource__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceStringParserRuleCall_0()); }
+	ruleStatemachineActionFieldSourceString
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceStringParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceNumberParserRuleCall_1()); }
+	ruleStatemachineActionFieldSourceNumber
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceNumberParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEvaluateParserRuleCall_2()); }
+	ruleStatemachineActionFieldSourceEvaluate
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEvaluateParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceTranslateParserRuleCall_3()); }
+	ruleStatemachineActionFieldSourceTranslate
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceTranslateParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldGetParserRuleCall_4()); }
+	ruleStatemachineActionFieldGet
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldGetParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineFunctionParserRuleCall_5()); }
+	ruleStatemachineFunction
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineFunctionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineStorageRetrieveParserRuleCall_6()); }
+	ruleStatemachineStorageRetrieve
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineStorageRetrieveParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceDtoAttributeParserRuleCall_7()); }
+	ruleStatemachineActionFieldSourceDtoAttribute
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceDtoAttributeParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEventParserRuleCall_8()); }
+	ruleStatemachineActionFieldSourceEvent
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEventParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionPeripheralPTResponseParserRuleCall_9()); }
+	ruleStatemachineActionPeripheralPTResponse
+{ after(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionPeripheralPTResponseParserRuleCall_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineActionFieldSourceMore__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceStringMoreParserRuleCall_0()); }
+	ruleStatemachineActionFieldSourceStringMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceStringMoreParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceNumberMoreParserRuleCall_1()); }
+	ruleStatemachineActionFieldSourceNumberMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceNumberMoreParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2()); }
+	ruleStatemachineActionFieldSourceEvaluateMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceTranslateMoreParserRuleCall_3()); }
+	ruleStatemachineActionFieldSourceTranslateMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceTranslateMoreParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldGetMoreParserRuleCall_4()); }
+	ruleStatemachineActionFieldGetMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldGetMoreParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineOperationMoreParserRuleCall_5()); }
+	ruleStatemachineOperationMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineOperationMoreParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineStorageRetrieveMoreParserRuleCall_6()); }
+	ruleStatemachineStorageRetrieveMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineStorageRetrieveMoreParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7()); }
+	ruleStatemachineActionFieldSourceDtoAttributeMore
+{ after(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineControl__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineControlAccess().getStatemachineControlButtonParserRuleCall_0()); }
+	ruleStatemachineControlButton
+{ after(grammarAccess.getStatemachineControlAccess().getStatemachineControlButtonParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlAccess().getStatemachineControlFieldParserRuleCall_1()); }
+	ruleStatemachineControlField
+{ after(grammarAccess.getStatemachineControlAccess().getStatemachineControlFieldParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlAccess().getStatemachineControlDTOParserRuleCall_2()); }
+	ruleStatemachineControlDTO
+{ after(grammarAccess.getStatemachineControlAccess().getStatemachineControlDTOParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlAccess().getStatemachineControlSchedulerParserRuleCall_3()); }
+	ruleStatemachineControlScheduler
+{ after(grammarAccess.getStatemachineControlAccess().getStatemachineControlSchedulerParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlAccess().getStatemachineControlPeripheralParserRuleCall_4()); }
+	ruleStatemachineControlPeripheral
+{ after(grammarAccess.getStatemachineControlAccess().getStatemachineControlPeripheralParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineControlButtonAttributeEvent__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0()); }
+	ruleStatemachineControlButtonAttributeEventKeyboard
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventIdentityParserRuleCall_1()); }
+	ruleStatemachineControlButtonAttributeEventIdentity
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventIdentityParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventEventParserRuleCall_2()); }
+	ruleStatemachineControlButtonAttributeEventEvent
+{ after(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventEventParserRuleCall_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__StatemachineInternalType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getBOOLEANEnumLiteralDeclaration_0()); }
+(	'Boolean' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getBOOLEANEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getINTEGEREnumLiteralDeclaration_1()); }
+(	'Integer' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getINTEGEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getLONGEnumLiteralDeclaration_2()); }
+(	'Long' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getLONGEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getDOUBLEEnumLiteralDeclaration_3()); }
+(	'Double' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getDOUBLEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getSTRINGEnumLiteralDeclaration_4()); }
+(	'String' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getSTRINGEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getDATEEnumLiteralDeclaration_5()); }
+(	'Date' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getDATEEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineInternalTypeAccess().getSUGGESTTEXTEnumLiteralDeclaration_6()); }
+(	'SuggestText' 
+)
+{ after(grammarAccess.getStatemachineInternalTypeAccess().getSUGGESTTEXTEnumLiteralDeclaration_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineControlButtonEventType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineControlButtonEventTypeAccess().getKEYBOARDEnumLiteralDeclaration_0()); }
+(	'keyboard' 
+)
+{ after(grammarAccess.getStatemachineControlButtonEventTypeAccess().getKEYBOARDEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlButtonEventTypeAccess().getTRIGGEREnumLiteralDeclaration_1()); }
+(	'trigger' 
+)
+{ after(grammarAccess.getStatemachineControlButtonEventTypeAccess().getTRIGGEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineControlButtonEventTypeAccess().getIDENTITYEnumLiteralDeclaration_2()); }
+(	'identity' 
+)
+{ after(grammarAccess.getStatemachineControlButtonEventTypeAccess().getIDENTITYEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineEvaluationType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getIP_ADDRESSEnumLiteralDeclaration_0()); }
+(	'getIPAddress' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getIP_ADDRESSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getNOWEnumLiteralDeclaration_1()); }
+(	'getNow' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getNOWEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_AGENT_INFOEnumLiteralDeclaration_2()); }
+(	'getUserAgentInfo' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_AGENT_INFOEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getIS_TOUCH_DEVICEEnumLiteralDeclaration_3()); }
+(	'isTouchDevice' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getIS_TOUCH_DEVICEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getIS_HTTPSEnumLiteralDeclaration_4()); }
+(	'isHttps' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getIS_HTTPSEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getBROWSER_LOCALEEnumLiteralDeclaration_5()); }
+(	'getBrowserLocale' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getBROWSER_LOCALEEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_NAMEEnumLiteralDeclaration_6()); }
+(	'getUserName' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_NAMEEnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_PASSWORDEnumLiteralDeclaration_7()); }
+(	'getUserPassword' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_PASSWORDEnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_EMAILEnumLiteralDeclaration_8()); }
+(	'getUserEmail' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_EMAILEnumLiteralDeclaration_8()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_POSITIONEnumLiteralDeclaration_9()); }
+(	'getUserPosition' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_POSITIONEnumLiteralDeclaration_9()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_PRTSERVICEEnumLiteralDeclaration_10()); }
+(	'getUserPrintService' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getUSER_PRTSERVICEEnumLiteralDeclaration_10()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getSCREEN_WIDTHEnumLiteralDeclaration_11()); }
+(	'getSceenWidth' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getSCREEN_WIDTHEnumLiteralDeclaration_11()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getSCREEN_HEIGHTEnumLiteralDeclaration_12()); }
+(	'getScreenHeight' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getSCREEN_HEIGHTEnumLiteralDeclaration_12()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineEvaluationTypeAccess().getTRIGGEREnumLiteralDeclaration_13()); }
+(	'getTrigger' 
+)
+{ after(grammarAccess.getStatemachineEvaluationTypeAccess().getTRIGGEREnumLiteralDeclaration_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineUserMessageType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getHUMANIZED_MESSAGEEnumLiteralDeclaration_0()); }
+(	'humanized' 
+)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getHUMANIZED_MESSAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getWARNING_MESSAGEEnumLiteralDeclaration_1()); }
+(	'warning' 
+)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getWARNING_MESSAGEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getERROR_MESSAGEEnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getERROR_MESSAGEEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getTRAY_NOTIFICATIONEnumLiteralDeclaration_3()); }
+(	'tray' 
+)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getTRAY_NOTIFICATIONEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineUserMessageTypeAccess().getASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4()); }
+(	'assistive' 
+)
+{ after(grammarAccess.getStatemachineUserMessageTypeAccess().getASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineLineDisplayCursorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_NONEEnumLiteralDeclaration_0()); }
+(	'none' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_NONEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_FIXEDEnumLiteralDeclaration_1()); }
+(	'fixed' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_FIXEDEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_BLOCKEnumLiteralDeclaration_2()); }
+(	'block' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_BLOCKEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_HALFBLOCKEnumLiteralDeclaration_3()); }
+(	'halfblock' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_HALFBLOCKEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_UNDERLINEEnumLiteralDeclaration_4()); }
+(	'underline' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_UNDERLINEEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_REVERSEEnumLiteralDeclaration_5()); }
+(	'reverse' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_REVERSEEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_OTHEREnumLiteralDeclaration_6()); }
+(	'other' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_OTHEREnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_BLINKEnumLiteralDeclaration_7()); }
+(	'blink' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayCursorTypeAccess().getDISP_CT_BLINKEnumLiteralDeclaration_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineLineDisplayMarqueeType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_NONEEnumLiteralDeclaration_0()); }
+(	'none' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_NONEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_UPEnumLiteralDeclaration_1()); }
+(	'up' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_UPEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_DOWNEnumLiteralDeclaration_2()); }
+(	'down' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_DOWNEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_LEFTEnumLiteralDeclaration_3()); }
+(	'left' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_LEFTEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_RIGHTEnumLiteralDeclaration_4()); }
+(	'right' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_RIGHTEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_INITEnumLiteralDeclaration_5()); }
+(	'init' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeTypeAccess().getDISP_MT_INITEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineLineDisplayMarqueeFormat__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getDISP_MF_WALKEnumLiteralDeclaration_0()); }
+(	'walk' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getDISP_MF_WALKEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getDISP_MF_PLACEEnumLiteralDeclaration_1()); }
+(	'place' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayMarqueeFormatAccess().getDISP_MF_PLACEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineLineDisplayTextType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_NORMALEnumLiteralDeclaration_0()); }
+(	'normal' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_NORMALEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_BLINKEnumLiteralDeclaration_1()); }
+(	'blink' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_BLINKEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_REVERSEEnumLiteralDeclaration_2()); }
+(	'reverse' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_REVERSEEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3()); }
+(	'blinkreverse' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayTextTypeAccess().getDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineLineDisplayScrollTextType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_UPEnumLiteralDeclaration_0()); }
+(	'up' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_UPEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_DOWNEnumLiteralDeclaration_1()); }
+(	'down' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_DOWNEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_LEFTEnumLiteralDeclaration_2()); }
+(	'left' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_LEFTEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_RIGHTEnumLiteralDeclaration_3()); }
+(	'right' 
+)
+{ after(grammarAccess.getStatemachineLineDisplayScrollTextTypeAccess().getDISP_ST_RIGHTEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePOSPrinterBarcodeType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCAEnumLiteralDeclaration_0()); }
+(	'upca' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCAEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCEEnumLiteralDeclaration_1()); }
+(	'upcb' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_JAN8EnumLiteralDeclaration_2()); }
+(	'jan8' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_JAN8EnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN8EnumLiteralDeclaration_3()); }
+(	'ean8' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN8EnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_JAN13EnumLiteralDeclaration_4()); }
+(	'jan13' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_JAN13EnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN13EnumLiteralDeclaration_5()); }
+(	'ean13' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN13EnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_TFEnumLiteralDeclaration_6()); }
+(	'tf' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_TFEnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_ITFEnumLiteralDeclaration_7()); }
+(	'itf' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_ITFEnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_CodabarEnumLiteralDeclaration_8()); }
+(	'codeabar' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_CodabarEnumLiteralDeclaration_8()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code39EnumLiteralDeclaration_9()); }
+(	'code39' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code39EnumLiteralDeclaration_9()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code93EnumLiteralDeclaration_10()); }
+(	'code93' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code93EnumLiteralDeclaration_10()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code128EnumLiteralDeclaration_11()); }
+(	'code128' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code128EnumLiteralDeclaration_11()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCA_SEnumLiteralDeclaration_12()); }
+(	'upca_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCA_SEnumLiteralDeclaration_12()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCE_SEnumLiteralDeclaration_13()); }
+(	'upce_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCE_SEnumLiteralDeclaration_13()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD1EnumLiteralDeclaration_14()); }
+(	'upcd1' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD1EnumLiteralDeclaration_14()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD2EnumLiteralDeclaration_15()); }
+(	'upcd2' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD2EnumLiteralDeclaration_15()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD3EnumLiteralDeclaration_16()); }
+(	'upcd3' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD3EnumLiteralDeclaration_16()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD4EnumLiteralDeclaration_17()); }
+(	'upcd4' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD4EnumLiteralDeclaration_17()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD5EnumLiteralDeclaration_18()); }
+(	'upcd5' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPCD5EnumLiteralDeclaration_18()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN8_SEnumLiteralDeclaration_19()); }
+(	'ean8_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN8_SEnumLiteralDeclaration_19()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN13_SEnumLiteralDeclaration_20()); }
+(	'ean13_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN13_SEnumLiteralDeclaration_20()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN128EnumLiteralDeclaration_21()); }
+(	'ean128' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_EAN128EnumLiteralDeclaration_21()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_OCRAEnumLiteralDeclaration_22()); }
+(	'orca' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_OCRAEnumLiteralDeclaration_22()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_OCRBEnumLiteralDeclaration_23()); }
+(	'ocrb' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_OCRBEnumLiteralDeclaration_23()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24()); }
+(	'code128_parsed' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAREnumLiteralDeclaration_25()); }
+(	'gs1databar' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAREnumLiteralDeclaration_25()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26()); }
+(	'gs1databar_e' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27()); }
+(	'gs1databar_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28()); }
+(	'gs1databar_e_s' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_PDF417EnumLiteralDeclaration_29()); }
+(	'pdf417' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_PDF417EnumLiteralDeclaration_29()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_MAXICODEEnumLiteralDeclaration_30()); }
+(	'maxicode' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_MAXICODEEnumLiteralDeclaration_30()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31()); }
+(	'datamatrix' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_QRCODEEnumLiteralDeclaration_32()); }
+(	'qrcode' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_QRCODEEnumLiteralDeclaration_32()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UQRCODEEnumLiteralDeclaration_33()); }
+(	'uqrcode' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UQRCODEEnumLiteralDeclaration_33()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_AZTECEnumLiteralDeclaration_34()); }
+(	'aztec' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_AZTECEnumLiteralDeclaration_34()); }
+)
+
+    |(
+{ before(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPDF417EnumLiteralDeclaration_35()); }
+(	'updf417' 
+)
+{ after(grammarAccess.getStatemachinePOSPrinterBarcodeTypeAccess().getPTR_BCS_UPDF417EnumLiteralDeclaration_35()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__StatemachinePackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group__0__Impl
+	rule__StatemachinePackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getStatemachinePackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStatemachinePackageAccess().getStatemachinePackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group__1__Impl
+	rule__StatemachinePackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getStatemachinePackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group__2__Impl
+	rule__StatemachinePackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getNameAssignment_2()); }
+(rule__StatemachinePackage__NameAssignment_2)
+{ after(grammarAccess.getStatemachinePackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getGroup_3()); }
+(rule__StatemachinePackage__Group_3__0)?
+{ after(grammarAccess.getStatemachinePackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StatemachinePackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group_3__0__Impl
+	rule__StatemachinePackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachinePackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group_3__1__Impl
+	rule__StatemachinePackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getImportsAssignment_3_1()); }
+(rule__StatemachinePackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getStatemachinePackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group_3__2__Impl
+	rule__StatemachinePackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getStatemachinesAssignment_3_2()); }
+(rule__StatemachinePackage__StatemachinesAssignment_3_2)*
+{ after(grammarAccess.getStatemachinePackageAccess().getStatemachinesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachinePackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachinePackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachinePackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachinePackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachinePackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Statemachine__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__0__Impl
+	rule__Statemachine__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getStatemachineKeyword_0()); }
+
+	'statemachine' 
+
+{ after(grammarAccess.getStatemachineAccess().getStatemachineKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__1__Impl
+	rule__Statemachine__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getNameAssignment_1()); }
+(rule__Statemachine__NameAssignment_1)
+{ after(grammarAccess.getStatemachineAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__2__Impl
+	rule__Statemachine__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_2()); }
+(rule__Statemachine__Group_2__0)?
+{ after(grammarAccess.getStatemachineAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__3__Impl
+	rule__Statemachine__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_3()); }
+(rule__Statemachine__Group_3__0)?
+{ after(grammarAccess.getStatemachineAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__4__Impl
+	rule__Statemachine__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getInitialStateKeyword_4()); }
+
+	'initialState' 
+
+{ after(grammarAccess.getStatemachineAccess().getInitialStateKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__5__Impl
+	rule__Statemachine__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getInitialStateAssignment_5()); }
+(rule__Statemachine__InitialStateAssignment_5)
+{ after(grammarAccess.getStatemachineAccess().getInitialStateAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__6__Impl
+	rule__Statemachine__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getInitialEventKeyword_6()); }
+
+	'initialEvent' 
+
+{ after(grammarAccess.getStatemachineAccess().getInitialEventKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__7__Impl
+	rule__Statemachine__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getInitialEventAssignment_7()); }
+(rule__Statemachine__InitialEventAssignment_7)
+{ after(grammarAccess.getStatemachineAccess().getInitialEventAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__8__Impl
+	rule__Statemachine__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_8()); }
+(rule__Statemachine__Group_8__0)
+{ after(grammarAccess.getStatemachineAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__9__Impl
+	rule__Statemachine__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_9()); }
+(rule__Statemachine__Group_9__0)
+{ after(grammarAccess.getStatemachineAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group__10__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_10()); }
+(rule__Statemachine__Group_10__0)
+{ after(grammarAccess.getStatemachineAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Statemachine__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_2__0__Impl
+	rule__Statemachine__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getDescriptionAssignment_2_0()); }
+(rule__Statemachine__DescriptionAssignment_2_0)
+{ after(grammarAccess.getStatemachineAccess().getDescriptionAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getDescriptionValueAssignment_2_1()); }
+(rule__Statemachine__DescriptionValueAssignment_2_1)
+{ after(grammarAccess.getStatemachineAccess().getDescriptionValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Statemachine__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_3__0__Impl
+	rule__Statemachine__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getFunctiongroupKeyword_3_0()); }
+
+	'functiongroup' 
+
+{ after(grammarAccess.getStatemachineAccess().getFunctiongroupKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getFunctionGroupAssignment_3_1()); }
+(rule__Statemachine__FunctionGroupAssignment_3_1)
+{ after(grammarAccess.getStatemachineAccess().getFunctionGroupAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Statemachine__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_8__0__Impl
+	rule__Statemachine__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getEventsKeyword_8_0()); }
+
+	'events' 
+
+{ after(grammarAccess.getStatemachineAccess().getEventsKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getGroup_8_1()); }
+(rule__Statemachine__Group_8_1__0)
+{ after(grammarAccess.getStatemachineAccess().getGroup_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Statemachine__Group_8_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_8_1__0__Impl
+	rule__Statemachine__Group_8_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_8_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_8_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_8_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_8_1__1__Impl
+	rule__Statemachine__Group_8_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_8_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getEventsAssignment_8_1_1()); }
+(rule__Statemachine__EventsAssignment_8_1_1)*
+{ after(grammarAccess.getStatemachineAccess().getEventsAssignment_8_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_8_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_8_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_8_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_8_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_8_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Statemachine__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_9__0__Impl
+	rule__Statemachine__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getControlsKeyword_9_0()); }
+
+	'controls' 
+
+{ after(grammarAccess.getStatemachineAccess().getControlsKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_9__1__Impl
+	rule__Statemachine__Group_9__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_9_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_9__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_9__2__Impl
+	rule__Statemachine__Group_9__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_9__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getControlsAssignment_9_2()); }
+(rule__Statemachine__ControlsAssignment_9_2)*
+{ after(grammarAccess.getStatemachineAccess().getControlsAssignment_9_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_9__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_9__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_9__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_9_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_9_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Statemachine__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_10__0__Impl
+	rule__Statemachine__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getStatesKeyword_10_0()); }
+
+	'states' 
+
+{ after(grammarAccess.getStatemachineAccess().getStatesKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_10__1__Impl
+	rule__Statemachine__Group_10__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_10_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_10__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_10__2__Impl
+	rule__Statemachine__Group_10__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_10__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getStatesAssignment_10_2()); }
+(rule__Statemachine__StatesAssignment_10_2)*
+{ after(grammarAccess.getStatemachineAccess().getStatesAssignment_10_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Statemachine__Group_10__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Statemachine__Group_10__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Statemachine__Group_10__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_10_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_10_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineEvent__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineEvent__Group__0__Impl
+	rule__StatemachineEvent__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineEvent__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineEventAccess().getEventKeyword_0()); }
+
+	'event' 
+
+{ after(grammarAccess.getStatemachineEventAccess().getEventKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineEvent__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineEvent__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineEvent__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineEventAccess().getNameAssignment_1()); }
+(rule__StatemachineEvent__NameAssignment_1)
+{ after(grammarAccess.getStatemachineEventAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StatemachineState__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group__0__Impl
+	rule__StatemachineState__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getStateKeyword_0()); }
+
+	'state' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getStateKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group__1__Impl
+	rule__StatemachineState__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getNameAssignment_1()); }
+(rule__StatemachineState__NameAssignment_1)
+{ after(grammarAccess.getStatemachineStateAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group__2__Impl
+	rule__StatemachineState__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group__3__Impl
+	rule__StatemachineState__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3()); }
+(rule__StatemachineState__UnorderedGroup_3)
+{ after(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineState__Group_3_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_0__0__Impl
+	rule__StatemachineState__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0()); }
+
+	'triggers' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_0__1__Impl
+	rule__StatemachineState__Group_3_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_0__2__Impl
+	rule__StatemachineState__Group_3_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getTriggersAssignment_3_0_2()); }
+(rule__StatemachineState__TriggersAssignment_3_0_2)*
+{ after(grammarAccess.getStatemachineStateAccess().getTriggersAssignment_3_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineState__Group_3_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_1__0__Impl
+	rule__StatemachineState__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getIdentityKeyword_3_1_0()); }
+
+	'identity' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getIdentityKeyword_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getIdentityAssignment_3_1_1()); }
+(rule__StatemachineState__IdentityAssignment_3_1_1)
+{ after(grammarAccess.getStatemachineStateAccess().getIdentityAssignment_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StatemachineState__Group_3_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2__0__Impl
+	rule__StatemachineState__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getKeystrokeKeyword_3_2_0()); }
+
+	'keystroke' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getKeystrokeKeyword_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2__1__Impl
+	rule__StatemachineState__Group_3_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getCommercialAtKeyword_3_2_1()); }
+
+	'@' 
+
+{ after(grammarAccess.getStatemachineStateAccess().getCommercialAtKeyword_3_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2__2__Impl
+	rule__StatemachineState__Group_3_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getKeystrokeAssignment_3_2_2()); }
+(rule__StatemachineState__KeystrokeAssignment_3_2_2)
+{ after(grammarAccess.getStatemachineStateAccess().getKeystrokeAssignment_3_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getGroup_3_2_3()); }
+(rule__StatemachineState__Group_3_2_3__0)?
+{ after(grammarAccess.getStatemachineStateAccess().getGroup_3_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineState__Group_3_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2_3__0__Impl
+	rule__StatemachineState__Group_3_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getHasKeyOperationAssignment_3_2_3_0()); }
+(rule__StatemachineState__HasKeyOperationAssignment_3_2_3_0)
+{ after(grammarAccess.getStatemachineStateAccess().getHasKeyOperationAssignment_3_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineState__Group_3_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineState__Group_3_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineState__Group_3_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineStateAccess().getKeyOperationAssignment_3_2_3_1()); }
+(rule__StatemachineState__KeyOperationAssignment_3_2_3_1)
+{ after(grammarAccess.getStatemachineStateAccess().getKeyOperationAssignment_3_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StatemachineTrigger__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__0__Impl
+	rule__StatemachineTrigger__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getStatemachineTriggerAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStatemachineTriggerAccess().getStatemachineTriggerAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__1__Impl
+	rule__StatemachineTrigger__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getTriggerKeyword_1()); }
+
+	'trigger' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getTriggerKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__2__Impl
+	rule__StatemachineTrigger__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getTriggersAssignment_2()); }
+(rule__StatemachineTrigger__TriggersAssignment_2)*
+{ after(grammarAccess.getStatemachineTriggerAccess().getTriggersAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__3__Impl
+	rule__StatemachineTrigger__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getGroup_3()); }
+(rule__StatemachineTrigger__Group_3__0)?
+{ after(grammarAccess.getStatemachineTriggerAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__4__Impl
+	rule__StatemachineTrigger__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getActionsKeyword_4()); }
+
+	'actions' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getActionsKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__5__Impl
+	rule__StatemachineTrigger__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getGroup_5()); }
+(rule__StatemachineTrigger__Group_5__0)?
+{ after(grammarAccess.getStatemachineTriggerAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__6__Impl
+	rule__StatemachineTrigger__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_6()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__7__Impl
+	rule__StatemachineTrigger__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getActionsAssignment_7()); }
+(rule__StatemachineTrigger__ActionsAssignment_7)*
+{ after(grammarAccess.getStatemachineTriggerAccess().getActionsAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineTrigger__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_3__0__Impl
+	rule__StatemachineTrigger__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getGuardsKeyword_3_0()); }
+
+	'guards' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getGuardsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_3__1__Impl
+	rule__StatemachineTrigger__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_3__2__Impl
+	rule__StatemachineTrigger__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getGuardsAssignment_3_2()); }
+(rule__StatemachineTrigger__GuardsAssignment_3_2)*
+{ after(grammarAccess.getStatemachineTriggerAccess().getGuardsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StatemachineTrigger__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_5__0__Impl
+	rule__StatemachineTrigger__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getHasTransitionAssignment_5_0()); }
+(rule__StatemachineTrigger__HasTransitionAssignment_5_0)
+{ after(grammarAccess.getStatemachineTriggerAccess().getHasTransitionAssignment_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineTrigger__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineTrigger__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineTrigger__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineTriggerAccess().getTransitionAssignment_5_1()); }
+(rule__StatemachineTrigger__TransitionAssignment_5_1)
+{ after(grammarAccess.getStatemachineTriggerAccess().getTransitionAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StatemachineActionPeripheralBlinkRate__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineActionPeripheralBlinkRate__Group__0__Impl
+	rule__StatemachineActionPeripheralBlinkRate__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineActionPeripheralBlinkRate__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateKeyword_0()); }
+
+	'blinkRate' 
+
+{ after(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineActionPeripheralBlinkRate__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StatemachineActionPeripheralBlinkRate__Group__1__Impl
+	rule__StatemachineActionPeripheralBlinkRate__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StatemachineActionPeripheralBlinkRate__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateAssignment_1()); }
+(rule__StatemachineActionPeripheralBlinkRate__BlinkRateAssignment_1)
+{ after(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StatemachineActionPeripheralBlinkRate__Group__2
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.tokens b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.tokens
new file mode 100644
index 0000000..751c5fd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.tokens
@@ -0,0 +1,525 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=238
+'%'=39
+'%='=20
+'&&'=15
+'&'=262
+'('=198
+')'=199
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=212
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=246
+'::'=266
+';'=242
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=261
+'?.'=267
+'?:'=33
+'@'=147
+'Boolean'=51
+'Date'=56
+'Double'=54
+'Integer'=52
+'Long'=53
+'String'=55
+'SuggestText'=57
+'['=239
+']'=237
+'actions'=148
+'and'=264
+'as'=241
+'assistive'=79
+'aztec'=131
+'barcodeType'=176
+'blink'=87
+'blinkRate'=150
+'blinkreverse'=96
+'block'=82
+'button'=231
+'caption'=201
+'case'=248
+'cashDrawer'=228
+'catch'=260
+'clear'=214
+'clearDevice'=151
+'code128'=108
+'code128_parsed'=121
+'code39'=106
+'code93'=107
+'codeabar'=105
+'column'=154
+'configuration'=191
+'controls'=141
+'createWindow'=152
+'cursorType'=159
+'data'=175
+'dataProvider'=224
+'datamatrix'=128
+'default'=247
+'delay'=235
+'described by'=263
+'description'=202
+'destroyWindow'=160
+'deviceBrightness'=161
+'displayBitmap'=162
+'displayText'=164
+'displayTextAt'=166
+'do'=251
+'down'=89
+'dto'=210
+'ean128'=118
+'ean13'=102
+'ean13_s'=117
+'ean8'=100
+'ean8_s'=116
+'else'=244
+'error'=77
+'event'=143
+'events'=140
+'extends'=45
+'extension'=48
+'false'=50
+'field'=233
+'fields'=223
+'finally'=258
+'fixed'=81
+'for'=249
+'from'=195
+'function'=204
+'functiongroup'=139
+'get'=211
+'getBrowserLocale'=66
+'getIPAddress'=61
+'getNow'=62
+'getSceenWidth'=72
+'getScreenHeight'=73
+'getTrigger'=74
+'getUserAgentInfo'=63
+'getUserEmail'=69
+'getUserName'=67
+'getUserPassword'=68
+'getUserPosition'=70
+'getUserPrintService'=71
+'gs1databar'=122
+'gs1databar_e'=123
+'gs1databar_e_s'=125
+'gs1databar_s'=124
+'guard'=200
+'guards'=149
+'halfblock'=83
+'height'=155
+'host'=183
+'humanized'=75
+'id'=163
+'identity'=60
+'if'=243
+'image'=218
+'import'=47
+'in'=220
+'init'=92
+'initialEvent'=138
+'initialState'=137
+'instanceof'=240
+'interCharacterWait'=167
+'invisible'=217
+'isHttps'=65
+'isTouchDevice'=64
+'itf'=104
+'jan13'=101
+'jan8'=99
+'key'=232
+'keyboard'=58
+'keypad'=222
+'keystroke'=146
+'layout'=234
+'left'=90
+'lineDisplay'=226
+'marqueeFormat'=168
+'marqueeRepeatWait'=169
+'marqueeType'=170
+'marqueeUnitWait'=171
+'maxicode'=127
+'name'=181
+'new'=252
+'none'=80
+'normal'=95
+'null'=253
+'ocrb'=120
+'ofAmount'=193
+'ofReceipt'=189
+'onFail'=265
+'openDrawer'=173
+'operation'=197
+'orca'=119
+'other'=86
+'package'=133
+'payment'=229
+'paymentAcknowledge'=186
+'paymentAuthorization'=192
+'paymentClose'=185
+'paymentOpen'=182
+'paymentRegistration'=190
+'paymentResponse'=194
+'paymentReversal'=187
+'pdf417'=126
+'peripheral'=230
+'place'=94
+'port'=184
+'posPrinter'=227
+'printBarcode'=174
+'printBitmap'=177
+'printCut'=178
+'printNormal'=179
+'printReport'=196
+'qrcode'=129
+'registerBitmap'=180
+'remove'=215
+'retrieve'=207
+'return'=256
+'reverse'=85
+'right'=91
+'row'=153
+'schedule'=221
+'scheduler'=225
+'scroll'=172
+'search'=219
+'send'=236
+'set'=213
+'state'=144
+'statemachine'=136
+'states'=142
+'static'=46
+'store'=205
+'super'=49
+'switch'=245
+'synchronized'=259
+'text'=165
+'tf'=103
+'throw'=255
+'transition'=208
+'translate'=209
+'tray'=78
+'trigger'=59
+'triggers'=145
+'true'=270
+'try'=257
+'type'=203
+'typeof'=254
+'underline'=84
+'up'=88
+'upca'=97
+'upca_s'=109
+'upcb'=98
+'upcd1'=111
+'upcd2'=112
+'upcd3'=113
+'upcd4'=114
+'upcd5'=115
+'upce_s'=110
+'updf417'=132
+'uqrcode'=130
+'val'=44
+'var'=269
+'visible'=216
+'walk'=93
+'warning'=76
+'while'=250
+'width'=156
+'windowHeight'=157
+'windowWidth'=158
+'with'=206
+'withPassword'=188
+'{'=134
+'|'=268
+'||'=14
+'}'=135
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__162=162
+T__163=163
+T__164=164
+T__165=165
+T__166=166
+T__167=167
+T__168=168
+T__169=169
+T__16=16
+T__170=170
+T__171=171
+T__172=172
+T__173=173
+T__174=174
+T__175=175
+T__176=176
+T__177=177
+T__178=178
+T__179=179
+T__17=17
+T__180=180
+T__181=181
+T__182=182
+T__183=183
+T__184=184
+T__185=185
+T__186=186
+T__187=187
+T__188=188
+T__189=189
+T__18=18
+T__190=190
+T__191=191
+T__192=192
+T__193=193
+T__194=194
+T__195=195
+T__196=196
+T__197=197
+T__198=198
+T__199=199
+T__19=19
+T__200=200
+T__201=201
+T__202=202
+T__203=203
+T__204=204
+T__205=205
+T__206=206
+T__207=207
+T__208=208
+T__209=209
+T__20=20
+T__210=210
+T__211=211
+T__212=212
+T__213=213
+T__214=214
+T__215=215
+T__216=216
+T__217=217
+T__218=218
+T__219=219
+T__21=21
+T__220=220
+T__221=221
+T__222=222
+T__223=223
+T__224=224
+T__225=225
+T__226=226
+T__227=227
+T__228=228
+T__229=229
+T__22=22
+T__230=230
+T__231=231
+T__232=232
+T__233=233
+T__234=234
+T__235=235
+T__236=236
+T__237=237
+T__238=238
+T__239=239
+T__23=23
+T__240=240
+T__241=241
+T__242=242
+T__243=243
+T__244=244
+T__245=245
+T__246=246
+T__247=247
+T__248=248
+T__249=249
+T__24=24
+T__250=250
+T__251=251
+T__252=252
+T__253=253
+T__254=254
+T__255=255
+T__256=256
+T__257=257
+T__258=258
+T__259=259
+T__25=25
+T__260=260
+T__261=261
+T__262=262
+T__263=263
+T__264=264
+T__265=265
+T__266=266
+T__267=267
+T__268=268
+T__269=269
+T__26=26
+T__270=270
+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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLLexer.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLLexer.java
new file mode 100644
index 0000000..624522d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLLexer.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 InternalStatemachineDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__265=265;
+    public static final int T__143=143;
+    public static final int T__264=264;
+    public static final int T__146=146;
+    public static final int T__267=267;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__266=266;
+    public static final int T__140=140;
+    public static final int T__261=261;
+    public static final int T__260=260;
+    public static final int T__142=142;
+    public static final int T__263=263;
+    public static final int T__141=141;
+    public static final int T__262=262;
+    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__258=258;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__257=257;
+    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__259=259;
+    public static final int T__133=133;
+    public static final int T__254=254;
+    public static final int T__132=132;
+    public static final int T__253=253;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__256=256;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int T__255=255;
+    public static final int T__250=250;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__252=252;
+    public static final int T__130=130;
+    public static final int T__251=251;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    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__247=247;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__246=246;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__249=249;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__248=248;
+    public static final int T__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    public static final int T__270=270;
+    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__269=269;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__268=268;
+    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__100=100;
+    public static final int T__221=221;
+    public static final int T__220=220;
+    public static final int T__102=102;
+    public static final int T__223=223;
+    public static final int T__101=101;
+    public static final int T__222=222;
+    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__218=218;
+    public static final int T__217=217;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__219=219;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__216=216;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__243=243;
+    public static final int T__121=121;
+    public static final int T__242=242;
+    public static final int T__124=124;
+    public static final int T__245=245;
+    public static final int T__123=123;
+    public static final int T__244=244;
+    public static final int T__120=120;
+    public static final int T__241=241;
+    public static final int T__240=240;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__239=239;
+    public static final int T__115=115;
+    public static final int T__236=236;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__235=235;
+    public static final int T__117=117;
+    public static final int T__238=238;
+    public static final int T__116=116;
+    public static final int T__237=237;
+    public static final int T__111=111;
+    public static final int T__232=232;
+    public static final int T__110=110;
+    public static final int T__231=231;
+    public static final int T__113=113;
+    public static final int T__234=234;
+    public static final int T__112=112;
+    public static final int T__233=233;
+    public static final int T__230=230;
+    public static final int T__108=108;
+    public static final int T__229=229;
+    public static final int T__107=107;
+    public static final int T__228=228;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__225=225;
+    public static final int T__103=103;
+    public static final int T__224=224;
+    public static final int T__106=106;
+    public static final int T__227=227;
+    public static final int T__105=105;
+    public static final int T__226=226;
+    public static final int RULE_HEX=6;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalStatemachineDSLLexer() {;} 
+    public InternalStatemachineDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalStatemachineDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:14:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:15:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:16:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:17:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:18:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:19:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:20:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:21:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:22:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:23:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:24:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:25:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:26:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:27:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:28:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:29:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:30:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:31:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:32:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:33:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:34:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:35:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:36:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:37:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:38:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:39:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:40:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:42:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:43:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:44:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:45:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:46:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:47:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:48:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:49:7: ( 'Boolean' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:49:9: 'Boolean'
+            {
+            match("Boolean"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:50:7: ( 'Integer' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:50:9: 'Integer'
+            {
+            match("Integer"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:51:7: ( 'Long' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:51:9: 'Long'
+            {
+            match("Long"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:52:7: ( 'Double' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:52:9: 'Double'
+            {
+            match("Double"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:53:7: ( 'String' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:53:9: 'String'
+            {
+            match("String"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:54:7: ( 'Date' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:54:9: 'Date'
+            {
+            match("Date"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:55:7: ( 'SuggestText' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:55:9: 'SuggestText'
+            {
+            match("SuggestText"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:56:7: ( 'keyboard' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:56:9: 'keyboard'
+            {
+            match("keyboard"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:57:7: ( 'trigger' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:57:9: 'trigger'
+            {
+            match("trigger"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:58:7: ( 'identity' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:58:9: 'identity'
+            {
+            match("identity"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:59:7: ( 'getIPAddress' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:59:9: 'getIPAddress'
+            {
+            match("getIPAddress"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:60:7: ( 'getNow' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:60:9: 'getNow'
+            {
+            match("getNow"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:61:7: ( 'getUserAgentInfo' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:61:9: 'getUserAgentInfo'
+            {
+            match("getUserAgentInfo"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:62:7: ( 'isTouchDevice' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:62:9: 'isTouchDevice'
+            {
+            match("isTouchDevice"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:63:7: ( 'isHttps' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:63:9: 'isHttps'
+            {
+            match("isHttps"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:64:7: ( 'getBrowserLocale' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:64:9: 'getBrowserLocale'
+            {
+            match("getBrowserLocale"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:65:7: ( 'getUserName' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:65:9: 'getUserName'
+            {
+            match("getUserName"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:66:7: ( 'getUserPassword' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:66:9: 'getUserPassword'
+            {
+            match("getUserPassword"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:67:7: ( 'getUserEmail' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:67:9: 'getUserEmail'
+            {
+            match("getUserEmail"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:68:7: ( 'getUserPosition' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:68:9: 'getUserPosition'
+            {
+            match("getUserPosition"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:69:7: ( 'getUserPrintService' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:69:9: 'getUserPrintService'
+            {
+            match("getUserPrintService"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:70:7: ( 'getSceenWidth' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:70:9: 'getSceenWidth'
+            {
+            match("getSceenWidth"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:71:7: ( 'getScreenHeight' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:71:9: 'getScreenHeight'
+            {
+            match("getScreenHeight"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:72:7: ( 'getTrigger' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:72:9: 'getTrigger'
+            {
+            match("getTrigger"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:73:7: ( 'humanized' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:73:9: 'humanized'
+            {
+            match("humanized"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:74:7: ( 'warning' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:74:9: 'warning'
+            {
+            match("warning"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:75:7: ( 'error' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:75:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:76:7: ( 'tray' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:76:9: 'tray'
+            {
+            match("tray"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:77:7: ( 'assistive' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:77:9: 'assistive'
+            {
+            match("assistive"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:78:7: ( 'none' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:78:9: 'none'
+            {
+            match("none"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:79:7: ( 'fixed' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:79:9: 'fixed'
+            {
+            match("fixed"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:80:7: ( 'block' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:80:9: 'block'
+            {
+            match("block"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:81:7: ( 'halfblock' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:81:9: 'halfblock'
+            {
+            match("halfblock"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:82:7: ( 'underline' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:82:9: 'underline'
+            {
+            match("underline"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:83:7: ( 'reverse' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:83:9: 'reverse'
+            {
+            match("reverse"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:84:7: ( 'other' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:84:9: 'other'
+            {
+            match("other"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:85:7: ( 'blink' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:85:9: 'blink'
+            {
+            match("blink"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:86:7: ( 'up' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:86:9: 'up'
+            {
+            match("up"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:87:7: ( 'down' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:87:9: 'down'
+            {
+            match("down"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:88:7: ( 'left' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:88:9: 'left'
+            {
+            match("left"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:89:7: ( 'right' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:89:9: 'right'
+            {
+            match("right"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:90:7: ( 'init' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:90:9: 'init'
+            {
+            match("init"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:91:7: ( 'walk' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:91:9: 'walk'
+            {
+            match("walk"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:92:7: ( 'place' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:92:9: 'place'
+            {
+            match("place"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:93:7: ( 'normal' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:93:9: 'normal'
+            {
+            match("normal"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:94:7: ( 'blinkreverse' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:94:9: 'blinkreverse'
+            {
+            match("blinkreverse"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:95:7: ( 'upca' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:95:9: 'upca'
+            {
+            match("upca"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:96:7: ( 'upcb' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:96:9: 'upcb'
+            {
+            match("upcb"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:97:7: ( 'jan8' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:97:9: 'jan8'
+            {
+            match("jan8"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:98:8: ( 'ean8' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:98:10: 'ean8'
+            {
+            match("ean8"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:99:8: ( 'jan13' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:99:10: 'jan13'
+            {
+            match("jan13"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:100:8: ( 'ean13' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:100:10: 'ean13'
+            {
+            match("ean13"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:101:8: ( 'tf' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:101:10: 'tf'
+            {
+            match("tf"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:102:8: ( 'itf' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:102:10: 'itf'
+            {
+            match("itf"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:103:8: ( 'codeabar' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:103:10: 'codeabar'
+            {
+            match("codeabar"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:104:8: ( 'code39' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:104:10: 'code39'
+            {
+            match("code39"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:105:8: ( 'code93' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:105:10: 'code93'
+            {
+            match("code93"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:106:8: ( 'code128' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:106:10: 'code128'
+            {
+            match("code128"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:107:8: ( 'upca_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:107:10: 'upca_s'
+            {
+            match("upca_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:108:8: ( 'upce_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:108:10: 'upce_s'
+            {
+            match("upce_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:109:8: ( 'upcd1' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:109:10: 'upcd1'
+            {
+            match("upcd1"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:110:8: ( 'upcd2' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:110:10: 'upcd2'
+            {
+            match("upcd2"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:111:8: ( 'upcd3' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:111:10: 'upcd3'
+            {
+            match("upcd3"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:112:8: ( 'upcd4' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:112:10: 'upcd4'
+            {
+            match("upcd4"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:113:8: ( 'upcd5' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:113:10: 'upcd5'
+            {
+            match("upcd5"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:114:8: ( 'ean8_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:114:10: 'ean8_s'
+            {
+            match("ean8_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:115:8: ( 'ean13_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:115:10: 'ean13_s'
+            {
+            match("ean13_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:116:8: ( 'ean128' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:116:10: 'ean128'
+            {
+            match("ean128"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:117:8: ( 'orca' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:117:10: 'orca'
+            {
+            match("orca"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:118:8: ( 'ocrb' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:118:10: 'ocrb'
+            {
+            match("ocrb"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:119:8: ( 'code128_parsed' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:119:10: 'code128_parsed'
+            {
+            match("code128_parsed"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:120:8: ( 'gs1databar' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:120:10: 'gs1databar'
+            {
+            match("gs1databar"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:121:8: ( 'gs1databar_e' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:121:10: 'gs1databar_e'
+            {
+            match("gs1databar_e"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:122:8: ( 'gs1databar_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:122:10: 'gs1databar_s'
+            {
+            match("gs1databar_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:123:8: ( 'gs1databar_e_s' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:123:10: 'gs1databar_e_s'
+            {
+            match("gs1databar_e_s"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:124:8: ( 'pdf417' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:124:10: 'pdf417'
+            {
+            match("pdf417"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:125:8: ( 'maxicode' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:125:10: 'maxicode'
+            {
+            match("maxicode"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:126:8: ( 'datamatrix' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:126:10: 'datamatrix'
+            {
+            match("datamatrix"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:127:8: ( 'qrcode' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:127:10: 'qrcode'
+            {
+            match("qrcode"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:128:8: ( 'uqrcode' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:128:10: 'uqrcode'
+            {
+            match("uqrcode"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:129:8: ( 'aztec' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:129:10: 'aztec'
+            {
+            match("aztec"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:130:8: ( 'updf417' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:130:10: 'updf417'
+            {
+            match("updf417"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:131:8: ( 'package' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:131:10: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:132:8: ( '{' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:132:10: '{'
+            {
+            match('{'); 
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:133:8: ( '}' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:133:10: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:134:8: ( 'statemachine' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:134:10: 'statemachine'
+            {
+            match("statemachine"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:135:8: ( 'initialState' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:135:10: 'initialState'
+            {
+            match("initialState"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:136:8: ( 'initialEvent' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:136:10: 'initialEvent'
+            {
+            match("initialEvent"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:137:8: ( 'functiongroup' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:137:10: 'functiongroup'
+            {
+            match("functiongroup"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:138:8: ( 'events' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:138:10: 'events'
+            {
+            match("events"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:139:8: ( 'controls' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:139:10: 'controls'
+            {
+            match("controls"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:140:8: ( 'states' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:140:10: 'states'
+            {
+            match("states"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:141:8: ( 'event' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:141:10: 'event'
+            {
+            match("event"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:142:8: ( 'state' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:142:10: 'state'
+            {
+            match("state"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:143:8: ( 'triggers' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:143:10: 'triggers'
+            {
+            match("triggers"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:144:8: ( 'keystroke' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:144:10: 'keystroke'
+            {
+            match("keystroke"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:145:8: ( '@' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:145:10: '@'
+            {
+            match('@'); 
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:146:8: ( 'actions' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:146:10: 'actions'
+            {
+            match("actions"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:147:8: ( 'guards' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:147:10: 'guards'
+            {
+            match("guards"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:148:8: ( 'blinkRate' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:148:10: 'blinkRate'
+            {
+            match("blinkRate"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:149:8: ( 'clearDevice' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:149:10: 'clearDevice'
+            {
+            match("clearDevice"); 
+
+
+            }
+
+            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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:150:8: ( 'createWindow' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:150:10: 'createWindow'
+            {
+            match("createWindow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:151:8: ( 'row' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:151:10: 'row'
+            {
+            match("row"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:152:8: ( 'column' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:152:10: 'column'
+            {
+            match("column"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "T__155"
+    public final void mT__155() throws RecognitionException {
+        try {
+            int _type = T__155;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:153:8: ( 'height' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:153:10: 'height'
+            {
+            match("height"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "T__156"
+    public final void mT__156() throws RecognitionException {
+        try {
+            int _type = T__156;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:154:8: ( 'width' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:154:10: 'width'
+            {
+            match("width"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__156"
+
+    // $ANTLR start "T__157"
+    public final void mT__157() throws RecognitionException {
+        try {
+            int _type = T__157;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:155:8: ( 'windowHeight' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:155:10: 'windowHeight'
+            {
+            match("windowHeight"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__157"
+
+    // $ANTLR start "T__158"
+    public final void mT__158() throws RecognitionException {
+        try {
+            int _type = T__158;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:156:8: ( 'windowWidth' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:156:10: 'windowWidth'
+            {
+            match("windowWidth"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__158"
+
+    // $ANTLR start "T__159"
+    public final void mT__159() throws RecognitionException {
+        try {
+            int _type = T__159;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:157:8: ( 'cursorType' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:157:10: 'cursorType'
+            {
+            match("cursorType"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__159"
+
+    // $ANTLR start "T__160"
+    public final void mT__160() throws RecognitionException {
+        try {
+            int _type = T__160;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:158:8: ( 'destroyWindow' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:158:10: 'destroyWindow'
+            {
+            match("destroyWindow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__160"
+
+    // $ANTLR start "T__161"
+    public final void mT__161() throws RecognitionException {
+        try {
+            int _type = T__161;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:159:8: ( 'deviceBrightness' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:159:10: 'deviceBrightness'
+            {
+            match("deviceBrightness"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "T__162"
+    public final void mT__162() throws RecognitionException {
+        try {
+            int _type = T__162;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:160:8: ( 'displayBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:160:10: 'displayBitmap'
+            {
+            match("displayBitmap"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__162"
+
+    // $ANTLR start "T__163"
+    public final void mT__163() throws RecognitionException {
+        try {
+            int _type = T__163;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:161:8: ( 'id' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:161:10: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__163"
+
+    // $ANTLR start "T__164"
+    public final void mT__164() throws RecognitionException {
+        try {
+            int _type = T__164;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:162:8: ( 'displayText' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:162:10: 'displayText'
+            {
+            match("displayText"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__164"
+
+    // $ANTLR start "T__165"
+    public final void mT__165() throws RecognitionException {
+        try {
+            int _type = T__165;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:163:8: ( 'text' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:163:10: 'text'
+            {
+            match("text"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__165"
+
+    // $ANTLR start "T__166"
+    public final void mT__166() throws RecognitionException {
+        try {
+            int _type = T__166;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:164:8: ( 'displayTextAt' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:164:10: 'displayTextAt'
+            {
+            match("displayTextAt"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__166"
+
+    // $ANTLR start "T__167"
+    public final void mT__167() throws RecognitionException {
+        try {
+            int _type = T__167;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:165:8: ( 'interCharacterWait' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:165:10: 'interCharacterWait'
+            {
+            match("interCharacterWait"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__167"
+
+    // $ANTLR start "T__168"
+    public final void mT__168() throws RecognitionException {
+        try {
+            int _type = T__168;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:166:8: ( 'marqueeFormat' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:166:10: 'marqueeFormat'
+            {
+            match("marqueeFormat"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__168"
+
+    // $ANTLR start "T__169"
+    public final void mT__169() throws RecognitionException {
+        try {
+            int _type = T__169;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:167:8: ( 'marqueeRepeatWait' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:167:10: 'marqueeRepeatWait'
+            {
+            match("marqueeRepeatWait"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__169"
+
+    // $ANTLR start "T__170"
+    public final void mT__170() throws RecognitionException {
+        try {
+            int _type = T__170;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:168:8: ( 'marqueeType' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:168:10: 'marqueeType'
+            {
+            match("marqueeType"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__170"
+
+    // $ANTLR start "T__171"
+    public final void mT__171() throws RecognitionException {
+        try {
+            int _type = T__171;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:169:8: ( 'marqueeUnitWait' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:169:10: 'marqueeUnitWait'
+            {
+            match("marqueeUnitWait"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "T__172"
+    public final void mT__172() throws RecognitionException {
+        try {
+            int _type = T__172;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:170:8: ( 'scroll' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:170:10: 'scroll'
+            {
+            match("scroll"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__172"
+
+    // $ANTLR start "T__173"
+    public final void mT__173() throws RecognitionException {
+        try {
+            int _type = T__173;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:171:8: ( 'openDrawer' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:171:10: 'openDrawer'
+            {
+            match("openDrawer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__173"
+
+    // $ANTLR start "T__174"
+    public final void mT__174() throws RecognitionException {
+        try {
+            int _type = T__174;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:172:8: ( 'printBarcode' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:172:10: 'printBarcode'
+            {
+            match("printBarcode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__174"
+
+    // $ANTLR start "T__175"
+    public final void mT__175() throws RecognitionException {
+        try {
+            int _type = T__175;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:173:8: ( 'data' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:173:10: 'data'
+            {
+            match("data"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__175"
+
+    // $ANTLR start "T__176"
+    public final void mT__176() throws RecognitionException {
+        try {
+            int _type = T__176;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:174:8: ( 'barcodeType' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:174:10: 'barcodeType'
+            {
+            match("barcodeType"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__176"
+
+    // $ANTLR start "T__177"
+    public final void mT__177() throws RecognitionException {
+        try {
+            int _type = T__177;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:175:8: ( 'printBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:175:10: 'printBitmap'
+            {
+            match("printBitmap"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__177"
+
+    // $ANTLR start "T__178"
+    public final void mT__178() throws RecognitionException {
+        try {
+            int _type = T__178;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:176:8: ( 'printCut' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:176:10: 'printCut'
+            {
+            match("printCut"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__178"
+
+    // $ANTLR start "T__179"
+    public final void mT__179() throws RecognitionException {
+        try {
+            int _type = T__179;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:177:8: ( 'printNormal' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:177:10: 'printNormal'
+            {
+            match("printNormal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__179"
+
+    // $ANTLR start "T__180"
+    public final void mT__180() throws RecognitionException {
+        try {
+            int _type = T__180;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:178:8: ( 'registerBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:178:10: 'registerBitmap'
+            {
+            match("registerBitmap"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__180"
+
+    // $ANTLR start "T__181"
+    public final void mT__181() throws RecognitionException {
+        try {
+            int _type = T__181;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:179:8: ( 'name' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:179:10: 'name'
+            {
+            match("name"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__181"
+
+    // $ANTLR start "T__182"
+    public final void mT__182() throws RecognitionException {
+        try {
+            int _type = T__182;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:180:8: ( 'paymentOpen' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:180:10: 'paymentOpen'
+            {
+            match("paymentOpen"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__182"
+
+    // $ANTLR start "T__183"
+    public final void mT__183() throws RecognitionException {
+        try {
+            int _type = T__183;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:181:8: ( 'host' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:181:10: 'host'
+            {
+            match("host"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__183"
+
+    // $ANTLR start "T__184"
+    public final void mT__184() throws RecognitionException {
+        try {
+            int _type = T__184;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:182:8: ( 'port' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:182:10: 'port'
+            {
+            match("port"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__184"
+
+    // $ANTLR start "T__185"
+    public final void mT__185() throws RecognitionException {
+        try {
+            int _type = T__185;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:183:8: ( 'paymentClose' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:183:10: 'paymentClose'
+            {
+            match("paymentClose"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__185"
+
+    // $ANTLR start "T__186"
+    public final void mT__186() throws RecognitionException {
+        try {
+            int _type = T__186;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:184:8: ( 'paymentAcknowledge' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:184:10: 'paymentAcknowledge'
+            {
+            match("paymentAcknowledge"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__186"
+
+    // $ANTLR start "T__187"
+    public final void mT__187() throws RecognitionException {
+        try {
+            int _type = T__187;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:185:8: ( 'paymentReversal' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:185:10: 'paymentReversal'
+            {
+            match("paymentReversal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__187"
+
+    // $ANTLR start "T__188"
+    public final void mT__188() throws RecognitionException {
+        try {
+            int _type = T__188;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:186:8: ( 'withPassword' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:186:10: 'withPassword'
+            {
+            match("withPassword"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__188"
+
+    // $ANTLR start "T__189"
+    public final void mT__189() throws RecognitionException {
+        try {
+            int _type = T__189;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:187:8: ( 'ofReceipt' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:187:10: 'ofReceipt'
+            {
+            match("ofReceipt"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__189"
+
+    // $ANTLR start "T__190"
+    public final void mT__190() throws RecognitionException {
+        try {
+            int _type = T__190;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:188:8: ( 'paymentRegistration' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:188:10: 'paymentRegistration'
+            {
+            match("paymentRegistration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__190"
+
+    // $ANTLR start "T__191"
+    public final void mT__191() throws RecognitionException {
+        try {
+            int _type = T__191;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:189:8: ( 'configuration' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:189:10: 'configuration'
+            {
+            match("configuration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__191"
+
+    // $ANTLR start "T__192"
+    public final void mT__192() throws RecognitionException {
+        try {
+            int _type = T__192;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:190:8: ( 'paymentAuthorization' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:190:10: 'paymentAuthorization'
+            {
+            match("paymentAuthorization"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__192"
+
+    // $ANTLR start "T__193"
+    public final void mT__193() throws RecognitionException {
+        try {
+            int _type = T__193;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:191:8: ( 'ofAmount' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:191:10: 'ofAmount'
+            {
+            match("ofAmount"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__193"
+
+    // $ANTLR start "T__194"
+    public final void mT__194() throws RecognitionException {
+        try {
+            int _type = T__194;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:192:8: ( 'paymentResponse' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:192:10: 'paymentResponse'
+            {
+            match("paymentResponse"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__194"
+
+    // $ANTLR start "T__195"
+    public final void mT__195() throws RecognitionException {
+        try {
+            int _type = T__195;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:193:8: ( 'from' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:193:10: 'from'
+            {
+            match("from"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__195"
+
+    // $ANTLR start "T__196"
+    public final void mT__196() throws RecognitionException {
+        try {
+            int _type = T__196;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:194:8: ( 'printReport' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:194:10: 'printReport'
+            {
+            match("printReport"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__196"
+
+    // $ANTLR start "T__197"
+    public final void mT__197() throws RecognitionException {
+        try {
+            int _type = T__197;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:195:8: ( 'operation' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:195:10: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__197"
+
+    // $ANTLR start "T__198"
+    public final void mT__198() throws RecognitionException {
+        try {
+            int _type = T__198;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:196:8: ( '(' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:196:10: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__198"
+
+    // $ANTLR start "T__199"
+    public final void mT__199() throws RecognitionException {
+        try {
+            int _type = T__199;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:197:8: ( ')' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:197:10: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__199"
+
+    // $ANTLR start "T__200"
+    public final void mT__200() throws RecognitionException {
+        try {
+            int _type = T__200;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:198:8: ( 'guard' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:198:10: 'guard'
+            {
+            match("guard"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__200"
+
+    // $ANTLR start "T__201"
+    public final void mT__201() throws RecognitionException {
+        try {
+            int _type = T__201;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:199:8: ( 'caption' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:199:10: 'caption'
+            {
+            match("caption"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__201"
+
+    // $ANTLR start "T__202"
+    public final void mT__202() throws RecognitionException {
+        try {
+            int _type = T__202;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:200:8: ( 'description' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:200:10: 'description'
+            {
+            match("description"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__202"
+
+    // $ANTLR start "T__203"
+    public final void mT__203() throws RecognitionException {
+        try {
+            int _type = T__203;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:201:8: ( 'type' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:201:10: 'type'
+            {
+            match("type"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__203"
+
+    // $ANTLR start "T__204"
+    public final void mT__204() throws RecognitionException {
+        try {
+            int _type = T__204;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:202:8: ( 'function' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:202:10: 'function'
+            {
+            match("function"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__204"
+
+    // $ANTLR start "T__205"
+    public final void mT__205() throws RecognitionException {
+        try {
+            int _type = T__205;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:203:8: ( 'store' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:203:10: 'store'
+            {
+            match("store"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__205"
+
+    // $ANTLR start "T__206"
+    public final void mT__206() throws RecognitionException {
+        try {
+            int _type = T__206;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:204:8: ( 'with' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:204:10: 'with'
+            {
+            match("with"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__206"
+
+    // $ANTLR start "T__207"
+    public final void mT__207() throws RecognitionException {
+        try {
+            int _type = T__207;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:205:8: ( 'retrieve' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:205:10: 'retrieve'
+            {
+            match("retrieve"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__207"
+
+    // $ANTLR start "T__208"
+    public final void mT__208() throws RecognitionException {
+        try {
+            int _type = T__208;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:206:8: ( 'transition' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:206:10: 'transition'
+            {
+            match("transition"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__208"
+
+    // $ANTLR start "T__209"
+    public final void mT__209() throws RecognitionException {
+        try {
+            int _type = T__209;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:207:8: ( 'translate' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:207:10: 'translate'
+            {
+            match("translate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__209"
+
+    // $ANTLR start "T__210"
+    public final void mT__210() throws RecognitionException {
+        try {
+            int _type = T__210;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:208:8: ( 'dto' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:208:10: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__210"
+
+    // $ANTLR start "T__211"
+    public final void mT__211() throws RecognitionException {
+        try {
+            int _type = T__211;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:209:8: ( 'get' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:209:10: 'get'
+            {
+            match("get"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__211"
+
+    // $ANTLR start "T__212"
+    public final void mT__212() throws RecognitionException {
+        try {
+            int _type = T__212;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:210:8: ( ',' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:210:10: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__212"
+
+    // $ANTLR start "T__213"
+    public final void mT__213() throws RecognitionException {
+        try {
+            int _type = T__213;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:211:8: ( 'set' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:211:10: 'set'
+            {
+            match("set"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__213"
+
+    // $ANTLR start "T__214"
+    public final void mT__214() throws RecognitionException {
+        try {
+            int _type = T__214;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:212:8: ( 'clear' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:212:10: 'clear'
+            {
+            match("clear"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__214"
+
+    // $ANTLR start "T__215"
+    public final void mT__215() throws RecognitionException {
+        try {
+            int _type = T__215;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:213:8: ( 'remove' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:213:10: 'remove'
+            {
+            match("remove"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__215"
+
+    // $ANTLR start "T__216"
+    public final void mT__216() throws RecognitionException {
+        try {
+            int _type = T__216;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:214:8: ( 'visible' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:214:10: 'visible'
+            {
+            match("visible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__216"
+
+    // $ANTLR start "T__217"
+    public final void mT__217() throws RecognitionException {
+        try {
+            int _type = T__217;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:215:8: ( 'invisible' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:215:10: 'invisible'
+            {
+            match("invisible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__217"
+
+    // $ANTLR start "T__218"
+    public final void mT__218() throws RecognitionException {
+        try {
+            int _type = T__218;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:216:8: ( 'image' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:216:10: 'image'
+            {
+            match("image"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__218"
+
+    // $ANTLR start "T__219"
+    public final void mT__219() throws RecognitionException {
+        try {
+            int _type = T__219;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:217:8: ( 'search' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:217:10: 'search'
+            {
+            match("search"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__219"
+
+    // $ANTLR start "T__220"
+    public final void mT__220() throws RecognitionException {
+        try {
+            int _type = T__220;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:218:8: ( 'in' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:218:10: 'in'
+            {
+            match("in"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__220"
+
+    // $ANTLR start "T__221"
+    public final void mT__221() throws RecognitionException {
+        try {
+            int _type = T__221;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:219:8: ( 'schedule' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:219:10: 'schedule'
+            {
+            match("schedule"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__221"
+
+    // $ANTLR start "T__222"
+    public final void mT__222() throws RecognitionException {
+        try {
+            int _type = T__222;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:220:8: ( 'keypad' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:220:10: 'keypad'
+            {
+            match("keypad"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__222"
+
+    // $ANTLR start "T__223"
+    public final void mT__223() throws RecognitionException {
+        try {
+            int _type = T__223;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:221:8: ( 'fields' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:221:10: 'fields'
+            {
+            match("fields"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__223"
+
+    // $ANTLR start "T__224"
+    public final void mT__224() throws RecognitionException {
+        try {
+            int _type = T__224;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:222:8: ( 'dataProvider' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:222:10: 'dataProvider'
+            {
+            match("dataProvider"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__224"
+
+    // $ANTLR start "T__225"
+    public final void mT__225() throws RecognitionException {
+        try {
+            int _type = T__225;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:223:8: ( 'scheduler' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:223:10: 'scheduler'
+            {
+            match("scheduler"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__225"
+
+    // $ANTLR start "T__226"
+    public final void mT__226() throws RecognitionException {
+        try {
+            int _type = T__226;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:224:8: ( 'lineDisplay' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:224:10: 'lineDisplay'
+            {
+            match("lineDisplay"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__226"
+
+    // $ANTLR start "T__227"
+    public final void mT__227() throws RecognitionException {
+        try {
+            int _type = T__227;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:225:8: ( 'posPrinter' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:225:10: 'posPrinter'
+            {
+            match("posPrinter"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__227"
+
+    // $ANTLR start "T__228"
+    public final void mT__228() throws RecognitionException {
+        try {
+            int _type = T__228;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:226:8: ( 'cashDrawer' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:226:10: 'cashDrawer'
+            {
+            match("cashDrawer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__228"
+
+    // $ANTLR start "T__229"
+    public final void mT__229() throws RecognitionException {
+        try {
+            int _type = T__229;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:227:8: ( 'payment' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:227:10: 'payment'
+            {
+            match("payment"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__229"
+
+    // $ANTLR start "T__230"
+    public final void mT__230() throws RecognitionException {
+        try {
+            int _type = T__230;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:228:8: ( 'peripheral' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:228:10: 'peripheral'
+            {
+            match("peripheral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__230"
+
+    // $ANTLR start "T__231"
+    public final void mT__231() throws RecognitionException {
+        try {
+            int _type = T__231;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:229:8: ( 'button' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:229:10: 'button'
+            {
+            match("button"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__231"
+
+    // $ANTLR start "T__232"
+    public final void mT__232() throws RecognitionException {
+        try {
+            int _type = T__232;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:230:8: ( 'key' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:230:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__232"
+
+    // $ANTLR start "T__233"
+    public final void mT__233() throws RecognitionException {
+        try {
+            int _type = T__233;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:231:8: ( 'field' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:231:10: 'field'
+            {
+            match("field"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__233"
+
+    // $ANTLR start "T__234"
+    public final void mT__234() throws RecognitionException {
+        try {
+            int _type = T__234;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:232:8: ( 'layout' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:232:10: 'layout'
+            {
+            match("layout"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__234"
+
+    // $ANTLR start "T__235"
+    public final void mT__235() throws RecognitionException {
+        try {
+            int _type = T__235;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:233:8: ( 'delay' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:233:10: 'delay'
+            {
+            match("delay"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__235"
+
+    // $ANTLR start "T__236"
+    public final void mT__236() throws RecognitionException {
+        try {
+            int _type = T__236;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:234:8: ( 'send' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:234:10: 'send'
+            {
+            match("send"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__236"
+
+    // $ANTLR start "T__237"
+    public final void mT__237() throws RecognitionException {
+        try {
+            int _type = T__237;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:235:8: ( ']' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:235:10: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__237"
+
+    // $ANTLR start "T__238"
+    public final void mT__238() throws RecognitionException {
+        try {
+            int _type = T__238;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:236:8: ( '#' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:236:10: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__238"
+
+    // $ANTLR start "T__239"
+    public final void mT__239() throws RecognitionException {
+        try {
+            int _type = T__239;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:237:8: ( '[' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:237:10: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__239"
+
+    // $ANTLR start "T__240"
+    public final void mT__240() throws RecognitionException {
+        try {
+            int _type = T__240;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:238:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:238:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__240"
+
+    // $ANTLR start "T__241"
+    public final void mT__241() throws RecognitionException {
+        try {
+            int _type = T__241;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:239:8: ( 'as' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:239:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__241"
+
+    // $ANTLR start "T__242"
+    public final void mT__242() throws RecognitionException {
+        try {
+            int _type = T__242;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:240:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:240:10: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__242"
+
+    // $ANTLR start "T__243"
+    public final void mT__243() throws RecognitionException {
+        try {
+            int _type = T__243;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:241:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:241:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__243"
+
+    // $ANTLR start "T__244"
+    public final void mT__244() throws RecognitionException {
+        try {
+            int _type = T__244;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:242:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:242:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__244"
+
+    // $ANTLR start "T__245"
+    public final void mT__245() throws RecognitionException {
+        try {
+            int _type = T__245;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:243:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:243:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__245"
+
+    // $ANTLR start "T__246"
+    public final void mT__246() throws RecognitionException {
+        try {
+            int _type = T__246;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:244:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:244:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__246"
+
+    // $ANTLR start "T__247"
+    public final void mT__247() throws RecognitionException {
+        try {
+            int _type = T__247;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:245:8: ( 'default' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:245:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__247"
+
+    // $ANTLR start "T__248"
+    public final void mT__248() throws RecognitionException {
+        try {
+            int _type = T__248;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:246:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:246:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__248"
+
+    // $ANTLR start "T__249"
+    public final void mT__249() throws RecognitionException {
+        try {
+            int _type = T__249;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:247:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:247:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__249"
+
+    // $ANTLR start "T__250"
+    public final void mT__250() throws RecognitionException {
+        try {
+            int _type = T__250;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:248:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:248:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__250"
+
+    // $ANTLR start "T__251"
+    public final void mT__251() throws RecognitionException {
+        try {
+            int _type = T__251;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:249:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:249:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__251"
+
+    // $ANTLR start "T__252"
+    public final void mT__252() throws RecognitionException {
+        try {
+            int _type = T__252;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:250:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:250:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__252"
+
+    // $ANTLR start "T__253"
+    public final void mT__253() throws RecognitionException {
+        try {
+            int _type = T__253;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:251:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:251:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__253"
+
+    // $ANTLR start "T__254"
+    public final void mT__254() throws RecognitionException {
+        try {
+            int _type = T__254;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:252:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:252:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__254"
+
+    // $ANTLR start "T__255"
+    public final void mT__255() throws RecognitionException {
+        try {
+            int _type = T__255;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:253:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:253:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__255"
+
+    // $ANTLR start "T__256"
+    public final void mT__256() throws RecognitionException {
+        try {
+            int _type = T__256;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:254:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:254:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__256"
+
+    // $ANTLR start "T__257"
+    public final void mT__257() throws RecognitionException {
+        try {
+            int _type = T__257;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:255:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:255:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__257"
+
+    // $ANTLR start "T__258"
+    public final void mT__258() throws RecognitionException {
+        try {
+            int _type = T__258;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:256:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:256:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__258"
+
+    // $ANTLR start "T__259"
+    public final void mT__259() throws RecognitionException {
+        try {
+            int _type = T__259;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:257:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:257:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__259"
+
+    // $ANTLR start "T__260"
+    public final void mT__260() throws RecognitionException {
+        try {
+            int _type = T__260;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:258:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:258:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__260"
+
+    // $ANTLR start "T__261"
+    public final void mT__261() throws RecognitionException {
+        try {
+            int _type = T__261;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:259:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:259:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__261"
+
+    // $ANTLR start "T__262"
+    public final void mT__262() throws RecognitionException {
+        try {
+            int _type = T__262;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:260:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:260:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__262"
+
+    // $ANTLR start "T__263"
+    public final void mT__263() throws RecognitionException {
+        try {
+            int _type = T__263;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:261:8: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:261:10: 'described by'
+            {
+            match("described by"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__263"
+
+    // $ANTLR start "T__264"
+    public final void mT__264() throws RecognitionException {
+        try {
+            int _type = T__264;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:262:8: ( 'and' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:262:10: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__264"
+
+    // $ANTLR start "T__265"
+    public final void mT__265() throws RecognitionException {
+        try {
+            int _type = T__265;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:263:8: ( 'onFail' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:263:10: 'onFail'
+            {
+            match("onFail"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__265"
+
+    // $ANTLR start "T__266"
+    public final void mT__266() throws RecognitionException {
+        try {
+            int _type = T__266;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:264:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:264:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__266"
+
+    // $ANTLR start "T__267"
+    public final void mT__267() throws RecognitionException {
+        try {
+            int _type = T__267;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:265:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:265:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__267"
+
+    // $ANTLR start "T__268"
+    public final void mT__268() throws RecognitionException {
+        try {
+            int _type = T__268;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:266:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:266:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__268"
+
+    // $ANTLR start "T__269"
+    public final void mT__269() throws RecognitionException {
+        try {
+            int _type = T__269;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:267:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:267:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__269"
+
+    // $ANTLR start "T__270"
+    public final void mT__270() throws RecognitionException {
+        try {
+            int _type = T__270;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:268:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:268:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__270"
+
+    // $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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41898: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41900:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41900:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41900: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41902: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41904:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41904:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41904:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41904: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41904: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41906: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41908:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41908:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41908: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41908: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41910: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41912:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41912:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41912: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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.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.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41914:16: ( . )
+            // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:41914:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | T__216 | T__217 | T__218 | T__219 | T__220 | T__221 | T__222 | T__223 | T__224 | T__225 | T__226 | T__227 | T__228 | T__229 | T__230 | T__231 | T__232 | T__233 | T__234 | T__235 | T__236 | T__237 | T__238 | T__239 | T__240 | T__241 | T__242 | T__243 | T__244 | T__245 | T__246 | T__247 | T__248 | T__249 | T__250 | T__251 | T__252 | T__253 | T__254 | T__255 | T__256 | T__257 | T__258 | T__259 | T__260 | T__261 | T__262 | T__263 | T__264 | T__265 | T__266 | T__267 | T__268 | T__269 | T__270 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=267;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1036: T__172
+                {
+                mT__172(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1043: T__173
+                {
+                mT__173(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1050: T__174
+                {
+                mT__174(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1057: T__175
+                {
+                mT__175(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1064: T__176
+                {
+                mT__176(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1071: T__177
+                {
+                mT__177(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1078: T__178
+                {
+                mT__178(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1085: T__179
+                {
+                mT__179(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1092: T__180
+                {
+                mT__180(); 
+
+                }
+                break;
+            case 169 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1099: T__181
+                {
+                mT__181(); 
+
+                }
+                break;
+            case 170 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1106: T__182
+                {
+                mT__182(); 
+
+                }
+                break;
+            case 171 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1113: T__183
+                {
+                mT__183(); 
+
+                }
+                break;
+            case 172 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1120: T__184
+                {
+                mT__184(); 
+
+                }
+                break;
+            case 173 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1127: T__185
+                {
+                mT__185(); 
+
+                }
+                break;
+            case 174 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1134: T__186
+                {
+                mT__186(); 
+
+                }
+                break;
+            case 175 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1141: T__187
+                {
+                mT__187(); 
+
+                }
+                break;
+            case 176 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1148: T__188
+                {
+                mT__188(); 
+
+                }
+                break;
+            case 177 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1155: T__189
+                {
+                mT__189(); 
+
+                }
+                break;
+            case 178 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1162: T__190
+                {
+                mT__190(); 
+
+                }
+                break;
+            case 179 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1169: T__191
+                {
+                mT__191(); 
+
+                }
+                break;
+            case 180 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1176: T__192
+                {
+                mT__192(); 
+
+                }
+                break;
+            case 181 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1183: T__193
+                {
+                mT__193(); 
+
+                }
+                break;
+            case 182 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1190: T__194
+                {
+                mT__194(); 
+
+                }
+                break;
+            case 183 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1197: T__195
+                {
+                mT__195(); 
+
+                }
+                break;
+            case 184 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1204: T__196
+                {
+                mT__196(); 
+
+                }
+                break;
+            case 185 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1211: T__197
+                {
+                mT__197(); 
+
+                }
+                break;
+            case 186 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1218: T__198
+                {
+                mT__198(); 
+
+                }
+                break;
+            case 187 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1225: T__199
+                {
+                mT__199(); 
+
+                }
+                break;
+            case 188 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1232: T__200
+                {
+                mT__200(); 
+
+                }
+                break;
+            case 189 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1239: T__201
+                {
+                mT__201(); 
+
+                }
+                break;
+            case 190 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1246: T__202
+                {
+                mT__202(); 
+
+                }
+                break;
+            case 191 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1253: T__203
+                {
+                mT__203(); 
+
+                }
+                break;
+            case 192 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1260: T__204
+                {
+                mT__204(); 
+
+                }
+                break;
+            case 193 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1267: T__205
+                {
+                mT__205(); 
+
+                }
+                break;
+            case 194 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1274: T__206
+                {
+                mT__206(); 
+
+                }
+                break;
+            case 195 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1281: T__207
+                {
+                mT__207(); 
+
+                }
+                break;
+            case 196 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1288: T__208
+                {
+                mT__208(); 
+
+                }
+                break;
+            case 197 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1295: T__209
+                {
+                mT__209(); 
+
+                }
+                break;
+            case 198 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1302: T__210
+                {
+                mT__210(); 
+
+                }
+                break;
+            case 199 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1309: T__211
+                {
+                mT__211(); 
+
+                }
+                break;
+            case 200 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1316: T__212
+                {
+                mT__212(); 
+
+                }
+                break;
+            case 201 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1323: T__213
+                {
+                mT__213(); 
+
+                }
+                break;
+            case 202 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1330: T__214
+                {
+                mT__214(); 
+
+                }
+                break;
+            case 203 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1337: T__215
+                {
+                mT__215(); 
+
+                }
+                break;
+            case 204 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1344: T__216
+                {
+                mT__216(); 
+
+                }
+                break;
+            case 205 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1351: T__217
+                {
+                mT__217(); 
+
+                }
+                break;
+            case 206 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1358: T__218
+                {
+                mT__218(); 
+
+                }
+                break;
+            case 207 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1365: T__219
+                {
+                mT__219(); 
+
+                }
+                break;
+            case 208 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1372: T__220
+                {
+                mT__220(); 
+
+                }
+                break;
+            case 209 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1379: T__221
+                {
+                mT__221(); 
+
+                }
+                break;
+            case 210 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1386: T__222
+                {
+                mT__222(); 
+
+                }
+                break;
+            case 211 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1393: T__223
+                {
+                mT__223(); 
+
+                }
+                break;
+            case 212 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1400: T__224
+                {
+                mT__224(); 
+
+                }
+                break;
+            case 213 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1407: T__225
+                {
+                mT__225(); 
+
+                }
+                break;
+            case 214 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1414: T__226
+                {
+                mT__226(); 
+
+                }
+                break;
+            case 215 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1421: T__227
+                {
+                mT__227(); 
+
+                }
+                break;
+            case 216 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1428: T__228
+                {
+                mT__228(); 
+
+                }
+                break;
+            case 217 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1435: T__229
+                {
+                mT__229(); 
+
+                }
+                break;
+            case 218 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1442: T__230
+                {
+                mT__230(); 
+
+                }
+                break;
+            case 219 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1449: T__231
+                {
+                mT__231(); 
+
+                }
+                break;
+            case 220 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1456: T__232
+                {
+                mT__232(); 
+
+                }
+                break;
+            case 221 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1463: T__233
+                {
+                mT__233(); 
+
+                }
+                break;
+            case 222 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1470: T__234
+                {
+                mT__234(); 
+
+                }
+                break;
+            case 223 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1477: T__235
+                {
+                mT__235(); 
+
+                }
+                break;
+            case 224 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1484: T__236
+                {
+                mT__236(); 
+
+                }
+                break;
+            case 225 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1491: T__237
+                {
+                mT__237(); 
+
+                }
+                break;
+            case 226 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1498: T__238
+                {
+                mT__238(); 
+
+                }
+                break;
+            case 227 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1505: T__239
+                {
+                mT__239(); 
+
+                }
+                break;
+            case 228 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1512: T__240
+                {
+                mT__240(); 
+
+                }
+                break;
+            case 229 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1519: T__241
+                {
+                mT__241(); 
+
+                }
+                break;
+            case 230 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1526: T__242
+                {
+                mT__242(); 
+
+                }
+                break;
+            case 231 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1533: T__243
+                {
+                mT__243(); 
+
+                }
+                break;
+            case 232 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1540: T__244
+                {
+                mT__244(); 
+
+                }
+                break;
+            case 233 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1547: T__245
+                {
+                mT__245(); 
+
+                }
+                break;
+            case 234 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1554: T__246
+                {
+                mT__246(); 
+
+                }
+                break;
+            case 235 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1561: T__247
+                {
+                mT__247(); 
+
+                }
+                break;
+            case 236 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1568: T__248
+                {
+                mT__248(); 
+
+                }
+                break;
+            case 237 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1575: T__249
+                {
+                mT__249(); 
+
+                }
+                break;
+            case 238 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1582: T__250
+                {
+                mT__250(); 
+
+                }
+                break;
+            case 239 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1589: T__251
+                {
+                mT__251(); 
+
+                }
+                break;
+            case 240 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1596: T__252
+                {
+                mT__252(); 
+
+                }
+                break;
+            case 241 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1603: T__253
+                {
+                mT__253(); 
+
+                }
+                break;
+            case 242 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1610: T__254
+                {
+                mT__254(); 
+
+                }
+                break;
+            case 243 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1617: T__255
+                {
+                mT__255(); 
+
+                }
+                break;
+            case 244 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1624: T__256
+                {
+                mT__256(); 
+
+                }
+                break;
+            case 245 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1631: T__257
+                {
+                mT__257(); 
+
+                }
+                break;
+            case 246 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1638: T__258
+                {
+                mT__258(); 
+
+                }
+                break;
+            case 247 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1645: T__259
+                {
+                mT__259(); 
+
+                }
+                break;
+            case 248 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1652: T__260
+                {
+                mT__260(); 
+
+                }
+                break;
+            case 249 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1659: T__261
+                {
+                mT__261(); 
+
+                }
+                break;
+            case 250 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1666: T__262
+                {
+                mT__262(); 
+
+                }
+                break;
+            case 251 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1673: T__263
+                {
+                mT__263(); 
+
+                }
+                break;
+            case 252 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1680: T__264
+                {
+                mT__264(); 
+
+                }
+                break;
+            case 253 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1687: T__265
+                {
+                mT__265(); 
+
+                }
+                break;
+            case 254 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1694: T__266
+                {
+                mT__266(); 
+
+                }
+                break;
+            case 255 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1701: T__267
+                {
+                mT__267(); 
+
+                }
+                break;
+            case 256 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1708: T__268
+                {
+                mT__268(); 
+
+                }
+                break;
+            case 257 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1715: T__269
+                {
+                mT__269(); 
+
+                }
+                break;
+            case 258 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1722: T__270
+                {
+                mT__270(); 
+
+                }
+                break;
+            case 259 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1729: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 260 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1738: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 261 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1747: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 262 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1760: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 263 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1768: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 264 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1780: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 265 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1796: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 266 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1812: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 267 :
+                // ../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g:1:1820: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\77\1\101\1\103\1\106\1\112\1\115\1\121\1\123\1\125\1"+
+        "\127\1\131\1\133\1\136\34\141\12\uffff\1\u00c7\2\u00ca\1\74\5\uffff"+
+        "\1\u00cf\26\uffff\1\u00d1\5\uffff\1\u00d3\4\uffff\2\141\1\uffff"+
+        "\14\141\1\u00e9\1\141\1\u00f0\1\141\1\u00f2\16\141\1\u0106\15\141"+
+        "\1\u0118\13\141\1\u0128\12\141\1\u0138\25\141\15\uffff\1\u00ca\12"+
+        "\uffff\1\u0158\1\u0159\13\141\1\u0166\7\141\1\uffff\6\141\1\uffff"+
+        "\1\u0174\1\uffff\6\141\1\u017b\7\141\1\u0186\2\141\1\u018a\1\141"+
+        "\1\uffff\3\141\1\u0195\15\141\1\uffff\2\141\1\u01a5\3\141\1\u01a9"+
+        "\10\141\1\uffff\6\141\1\u01bc\10\141\1\uffff\6\141\1\u01cd\30\141"+
+        "\2\uffff\3\141\1\u01ed\2\141\1\u01f1\5\141\1\uffff\1\141\1\u01f9"+
+        "\7\141\1\u0202\3\141\1\uffff\5\141\1\u020b\1\uffff\2\141\1\u020e"+
+        "\1\141\1\u0210\5\141\1\uffff\1\141\1\u0217\1\141\1\uffff\1\u0219"+
+        "\1\u021a\1\u021c\7\141\1\uffff\5\141\1\u0229\1\141\1\u022b\2\141"+
+        "\1\u022f\4\141\1\uffff\1\u0234\1\141\1\u0236\1\uffff\1\u0237\5\141"+
+        "\1\u023e\1\u023f\12\141\1\uffff\1\141\1\u024f\1\u0250\5\141\1\u0256"+
+        "\1\u0259\6\141\1\uffff\1\u0260\7\141\1\u0268\2\141\1\u026b\12\141"+
+        "\1\u0279\6\141\1\u0281\1\141\1\uffff\1\u0284\1\141\1\u0287\1\uffff"+
+        "\1\141\1\u028b\1\u028c\1\u028d\3\141\1\uffff\3\141\1\u0294\4\141"+
+        "\1\uffff\3\141\1\u029c\1\u029d\1\u029f\2\141\1\uffff\2\141\1\uffff"+
+        "\1\141\1\uffff\6\141\1\uffff\1\141\2\uffff\1\141\1\uffff\1\u02ae"+
+        "\7\141\1\u02b8\3\141\1\uffff\1\141\1\uffff\1\u02bd\2\141\1\uffff"+
+        "\1\u02c0\1\141\1\u02c2\1\141\1\uffff\1\141\2\uffff\1\u02c5\1\u02c8"+
+        "\4\141\2\uffff\1\141\1\u02ce\1\u02cf\1\u02d0\1\u02d1\1\u02d2\7\141"+
+        "\1\u02da\1\u02db\2\uffff\5\141\1\uffff\2\141\1\uffff\3\141\1\u02e6"+
+        "\2\141\1\uffff\2\141\1\u02eb\4\141\1\uffff\2\141\1\uffff\1\u02f5"+
+        "\7\141\1\u02fe\4\141\1\uffff\1\u0303\6\141\1\uffff\1\u030a\1\141"+
+        "\1\uffff\1\u030c\1\u030d\1\uffff\1\u030e\1\141\1\u0310\3\uffff\1"+
+        "\u0311\1\141\1\u0313\1\u0314\1\141\1\u0316\1\uffff\7\141\2\uffff"+
+        "\1\u031e\1\uffff\4\141\1\u0323\1\u0324\3\141\1\u0328\3\141\1\u032c"+
+        "\1\uffff\1\141\1\u032e\6\141\1\u0335\1\uffff\2\141\1\u0338\1\141"+
+        "\1\uffff\2\141\1\uffff\1\141\1\uffff\1\141\1\u033f\1\uffff\2\141"+
+        "\1\uffff\1\141\1\u0343\1\141\1\u0345\1\u0346\5\uffff\5\141\1\u034c"+
+        "\1\u034d\2\uffff\4\141\1\u0352\5\141\1\uffff\3\141\1\u035c\1\uffff"+
+        "\1\u035d\10\141\1\uffff\1\141\1\u0368\1\u0369\3\141\1\u036d\1\141"+
+        "\1\uffff\4\141\1\uffff\2\141\1\u0375\1\u0376\1\u0377\1\141\1\uffff"+
+        "\1\u0379\3\uffff\1\141\2\uffff\1\141\2\uffff\1\141\1\uffff\2\141"+
+        "\1\u037f\4\141\1\uffff\1\u0385\1\141\1\u0387\1\u0388\2\uffff\3\141"+
+        "\1\uffff\1\u038d\2\141\1\uffff\1\141\1\uffff\6\141\1\uffff\2\141"+
+        "\1\uffff\1\u039c\4\141\1\u03a1\1\uffff\3\141\1\uffff\1\141\2\uffff"+
+        "\1\u03a6\1\u03a7\1\u03a8\2\141\2\uffff\4\141\1\uffff\6\141\1\u03b5"+
+        "\2\141\2\uffff\1\u03b9\1\u03be\10\141\2\uffff\1\u03c8\2\141\1\uffff"+
+        "\3\141\1\u03ce\3\141\3\uffff\1\141\1\uffff\1\141\1\u03d8\1\141\1"+
+        "\u03da\1\141\1\uffff\5\141\1\uffff\1\u03e2\2\uffff\1\141\1\u03e4"+
+        "\1\141\1\u03e6\1\uffff\16\141\1\uffff\4\141\1\uffff\4\141\3\uffff"+
+        "\1\141\1\u0400\3\141\1\u0404\6\141\1\uffff\3\141\1\uffff\4\141\1"+
+        "\uffff\2\141\1\u0415\4\141\1\u041a\1\141\1\uffff\1\u041c\4\141\1"+
+        "\uffff\1\141\1\u0422\4\141\1\u0427\1\141\1\u0429\1\uffff\1\141\1"+
+        "\uffff\4\141\1\u042f\2\141\1\uffff\1\141\1\uffff\1\u0433\1\uffff"+
+        "\1\141\1\u0435\14\141\1\u0442\1\u0443\3\141\1\u0447\1\141\1\u0449"+
+        "\1\141\1\u044b\1\141\1\uffff\1\141\1\u044e\1\u044f\1\uffff\20\141"+
+        "\1\uffff\4\141\1\uffff\1\141\1\uffff\5\141\1\uffff\4\141\1\uffff"+
+        "\1\141\1\uffff\5\141\1\uffff\1\u0476\2\141\1\uffff\1\u0479\1\uffff"+
+        "\12\141\1\u0484\1\u0486\2\uffff\3\141\1\uffff\1\141\1\uffff\1\141"+
+        "\1\uffff\1\141\1\u048d\2\uffff\1\u048e\3\141\1\uffff\17\141\1\u04a1"+
+        "\1\u04a2\4\141\1\u04a7\1\u04a8\12\141\1\uffff\1\141\1\u04b4\1\uffff"+
+        "\2\141\1\u04b7\7\141\1\uffff\1\141\1\uffff\1\141\1\u04c2\2\141\1"+
+        "\u04c5\1\141\2\uffff\2\141\1\u04c9\2\141\1\u04cd\1\u04ce\1\u04cf"+
+        "\7\141\1\u04d7\1\u04d8\1\u04d9\2\uffff\2\141\1\u04dc\1\141\2\uffff"+
+        "\2\141\1\u04e0\1\141\1\u04e2\1\u04e3\1\141\1\u04e5\1\u04e6\2\141"+
+        "\1\uffff\1\u04e9\1\141\1\uffff\3\141\1\u04ee\3\141\1\u04f3\1\u04f4"+
+        "\1\u04f5\1\uffff\1\u04f6\1\u04f7\1\uffff\1\141\1\u04f9\1\141\1\uffff"+
+        "\3\141\3\uffff\1\u04fe\5\141\1\u0504\3\uffff\2\141\1\uffff\1\u0507"+
+        "\2\141\1\uffff\1\141\2\uffff\1\u050b\2\uffff\1\141\1\u050d\1\uffff"+
+        "\4\141\1\uffff\1\141\1\u0513\2\141\5\uffff\1\141\1\uffff\1\u0517"+
+        "\1\141\1\u0519\1\u051a\1\uffff\5\141\1\uffff\1\141\1\u0521\1\uffff"+
+        "\1\u0522\2\141\1\uffff\1\141\1\uffff\5\141\1\uffff\1\141\1\u052c"+
+        "\1\u052d\1\uffff\1\141\2\uffff\5\141\1\u0534\2\uffff\4\141\1\u0539"+
+        "\1\u053a\2\141\1\u053d\2\uffff\3\141\1\u0541\1\141\1\u0543\1\uffff"+
+        "\1\141\1\u0545\1\141\1\u0547\2\uffff\1\141\1\u0549\1\uffff\1\u054a"+
+        "\2\141\1\uffff\1\141\1\uffff\1\141\1\uffff\1\141\1\uffff\1\141\2"+
+        "\uffff\3\141\1\u0554\1\u0555\1\141\1\u0557\2\141\2\uffff\1\u055a"+
+        "\1\uffff\1\141\1\u055c\1\uffff\1\u055d\2\uffff";
+    static final String DFA21_eofS =
+        "\u055e\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\143"+
+        "\1\144\1\141\1\157\1\156\1\157\1\141\1\164\3\145\2\141\1\143\2\141"+
+        "\1\156\1\145\1\143\6\141\1\162\12\uffff\1\72\2\60\1\44\5\uffff\1"+
+        "\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\163\1\uffff\1\164"+
+        "\1\162\1\156\1\145\1\163\1\141\1\160\1\150\1\141\1\151\1\156\1\141"+
+        "\1\44\1\110\1\44\1\146\1\44\1\154\1\145\1\156\1\157\1\162\1\157"+
+        "\1\164\1\156\1\165\1\164\1\162\1\147\1\171\1\141\1\44\1\170\1\160"+
+        "\1\162\1\164\1\61\1\141\1\155\1\154\1\151\1\163\1\154\1\144\1\151"+
+        "\1\44\2\164\1\144\1\156\1\155\1\167\1\154\1\151\1\162\1\164\1\144"+
+        "\1\44\1\162\2\147\1\167\1\150\1\143\1\162\1\145\1\101\1\106\1\44"+
+        "\1\164\1\146\1\163\1\157\1\146\1\156\1\171\1\141\1\146\1\143\1\151"+
+        "\2\162\1\156\1\144\2\145\1\162\1\160\1\162\1\143\15\uffff\1\60\12"+
+        "\uffff\2\44\1\151\1\145\1\157\1\61\1\156\1\145\1\164\1\162\1\145"+
+        "\1\157\1\145\1\44\1\162\1\144\1\164\1\143\1\157\1\147\1\156\1\uffff"+
+        "\1\157\2\164\1\145\1\151\1\164\1\uffff\1\44\1\uffff\1\163\1\145"+
+        "\1\154\1\141\1\143\1\155\1\44\1\154\1\145\1\147\1\142\1\145\1\151"+
+        "\1\147\1\44\1\147\1\156\1\44\1\145\1\uffff\1\164\1\145\1\157\1\44"+
+        "\1\144\1\162\1\141\1\146\1\147\1\164\1\156\1\153\1\164\1\144\1\150"+
+        "\1\154\1\151\1\uffff\1\145\1\151\1\44\1\145\1\155\1\145\1\44\1\154"+
+        "\1\143\1\156\1\143\1\164\1\145\1\141\1\146\1\uffff\1\143\1\145\1"+
+        "\151\1\162\1\157\1\150\1\44\1\145\1\141\1\142\1\156\1\145\1\155"+
+        "\1\141\1\156\1\uffff\1\141\1\143\1\151\2\141\1\160\1\44\1\164\1"+
+        "\145\1\157\1\143\1\64\1\153\1\155\1\156\1\164\1\120\1\151\1\61\1"+
+        "\145\1\146\1\165\2\141\1\163\1\164\1\145\1\143\1\151\1\161\1\157"+
+        "\2\uffff\1\142\1\156\1\162\1\44\1\62\1\164\1\44\2\145\1\162\1\154"+
+        "\1\144\1\uffff\1\143\1\44\1\143\1\150\1\162\1\145\1\164\1\165\1"+
+        "\164\1\44\1\162\1\163\1\141\1\uffff\1\145\2\144\1\154\1\164\1\44"+
+        "\1\uffff\1\145\1\147\1\44\1\154\1\44\1\156\1\145\1\157\1\164\1\141"+
+        "\1\uffff\1\147\1\44\1\163\1\uffff\3\44\1\167\1\120\1\157\1\163\1"+
+        "\162\1\143\1\162\1\uffff\1\141\1\144\1\156\1\142\1\150\1\44\1\151"+
+        "\1\44\1\150\1\157\1\44\1\145\1\163\1\143\1\157\1\uffff\1\44\1\141"+
+        "\1\44\1\uffff\1\44\2\153\2\157\1\162\2\44\1\137\1\61\1\64\1\157"+
+        "\1\162\1\163\1\151\1\162\1\166\1\164\1\uffff\1\162\2\44\1\104\1"+
+        "\141\1\143\1\157\1\151\2\44\2\162\1\143\1\171\1\165\1\154\1\uffff"+
+        "\1\44\1\104\1\165\1\145\1\61\1\141\1\145\1\164\1\44\1\162\1\160"+
+        "\1\44\1\63\1\61\1\162\1\151\1\155\1\162\1\164\1\157\1\151\1\104"+
+        "\1\44\1\150\1\143\1\165\1\144\1\154\1\144\1\44\1\163\1\uffff\1\44"+
+        "\1\70\1\44\1\uffff\1\143\3\44\1\154\1\165\1\150\1\uffff\1\150\1"+
+        "\162\1\164\1\44\1\151\1\143\1\160\1\141\1\uffff\1\103\1\151\1\156"+
+        "\3\44\1\154\1\151\1\uffff\1\141\1\145\1\uffff\1\145\1\uffff\1\147"+
+        "\1\163\1\141\1\162\1\144\1\145\1\uffff\1\151\2\uffff\1\146\1\uffff"+
+        "\1\44\1\101\1\167\1\145\1\157\1\145\1\151\1\164\1\44\1\151\1\154"+
+        "\1\164\1\uffff\1\156\1\uffff\1\44\1\167\1\141\1\uffff\1\44\1\164"+
+        "\1\44\1\156\1\uffff\1\154\2\uffff\2\44\1\144\1\156\1\154\1\163\2"+
+        "\uffff\1\163\5\44\1\61\1\144\1\163\1\164\1\145\1\156\1\145\2\44"+
+        "\2\uffff\1\162\1\164\1\145\1\165\1\154\1\uffff\1\141\1\162\1\uffff"+
+        "\1\157\1\151\1\145\1\44\1\154\1\141\1\uffff\1\151\1\164\1\44\1\67"+
+        "\1\147\1\156\1\102\1\uffff\1\151\1\150\1\uffff\1\44\1\142\1\71\1"+
+        "\63\1\62\1\157\1\147\1\156\1\44\1\145\1\162\1\157\1\162\1\uffff"+
+        "\1\44\1\157\3\145\1\163\1\151\1\uffff\1\44\1\163\1\uffff\2\44\1"+
+        "\uffff\1\44\1\141\1\44\3\uffff\1\44\1\154\2\44\1\157\1\44\1\uffff"+
+        "\1\164\1\150\1\163\1\154\1\150\1\142\1\143\2\uffff\1\44\1\uffff"+
+        "\1\171\1\157\1\156\1\162\2\44\1\164\1\162\1\157\1\44\1\162\1\164"+
+        "\1\141\1\44\1\uffff\1\144\1\44\1\162\1\167\2\145\1\147\1\141\1\44"+
+        "\1\uffff\1\172\1\157\1\44\1\147\1\uffff\1\110\1\163\1\uffff\1\151"+
+        "\1\uffff\1\163\1\44\1\uffff\1\145\1\141\1\uffff\1\145\1\44\1\151"+
+        "\2\44\5\uffff\1\67\3\145\1\166\2\44\2\uffff\1\141\2\151\1\156\1"+
+        "\44\1\164\1\157\1\171\1\142\1\102\1\uffff\1\164\1\171\1\163\1\44"+
+        "\1\uffff\1\44\1\145\1\164\1\141\1\165\1\157\1\145\1\156\1\145\1"+
+        "\uffff\1\141\2\44\1\70\1\154\1\165\1\44\1\145\1\uffff\1\127\1\124"+
+        "\1\156\1\141\1\uffff\1\144\1\145\3\44\1\157\1\uffff\1\44\3\uffff"+
+        "\1\143\2\uffff\1\145\2\uffff\1\156\1\uffff\1\171\1\104\1\44\1\105"+
+        "\1\141\1\154\1\145\1\uffff\1\44\1\156\2\44\2\uffff\1\124\1\144\1"+
+        "\153\1\uffff\1\44\1\151\1\164\1\uffff\1\144\1\uffff\1\101\1\163"+
+        "\1\156\1\145\1\147\1\142\1\uffff\1\145\1\143\1\uffff\1\44\1\145"+
+        "\1\151\1\163\1\166\1\44\1\uffff\1\166\1\164\1\124\1\uffff\1\156"+
+        "\2\uffff\3\44\1\162\1\145\2\uffff\1\167\1\157\1\160\1\164\1\uffff"+
+        "\1\162\1\166\1\127\1\164\1\145\1\162\1\44\1\102\1\160\2\uffff\2"+
+        "\44\1\162\2\164\1\162\1\160\1\164\2\162\2\uffff\1\44\1\163\1\162"+
+        "\1\uffff\1\166\1\151\1\171\1\44\1\167\1\145\1\106\3\uffff\1\156"+
+        "\1\uffff\1\150\1\44\1\151\1\44\1\145\1\uffff\1\164\1\166\1\162\1"+
+        "\145\1\157\1\uffff\1\44\2\uffff\1\145\1\44\1\145\1\44\1\uffff\1"+
+        "\157\1\145\1\162\1\147\2\141\1\155\1\145\1\127\1\156\1\145\1\141"+
+        "\1\144\1\153\1\uffff\1\151\1\144\1\167\1\145\1\uffff\2\145\1\171"+
+        "\1\145\3\uffff\1\102\1\44\1\145\1\156\1\164\1\44\4\151\1\144\1\151"+
+        "\1\uffff\1\151\1\145\1\154\1\uffff\1\160\1\154\1\143\1\145\1\uffff"+
+        "\1\143\1\155\1\44\1\155\1\157\1\145\1\141\1\44\1\160\1\uffff\1\44"+
+        "\1\141\1\151\1\156\1\160\1\uffff\1\145\1\44\1\157\1\145\1\171\1"+
+        "\156\1\44\1\151\1\44\1\uffff\1\172\1\uffff\1\166\1\141\1\145\1\141"+
+        "\1\44\1\146\1\162\1\uffff\1\170\1\uffff\1\44\1\uffff\1\156\1\44"+
+        "\2\145\1\155\2\163\1\151\1\141\1\162\1\151\1\110\2\162\2\44\1\147"+
+        "\1\164\1\157\1\44\1\162\1\44\1\160\1\44\1\151\1\uffff\1\162\2\44"+
+        "\1\uffff\1\170\1\144\1\156\1\157\1\40\1\147\1\164\1\170\1\141\1"+
+        "\145\1\157\1\153\1\164\1\147\1\157\1\141\1\uffff\1\141\2\162\1\154"+
+        "\1\uffff\1\141\1\uffff\1\164\1\143\1\144\1\145\1\162\1\uffff\1\162"+
+        "\2\160\1\151\1\uffff\1\156\1\uffff\1\145\1\151\1\164\1\156\1\143"+
+        "\1\uffff\1\44\1\157\1\164\1\uffff\1\44\1\uffff\1\163\1\156\1\145"+
+        "\1\163\1\151\1\156\1\151\1\114\1\144\1\145\2\44\2\uffff\2\150\1"+
+        "\162\1\uffff\1\163\1\uffff\1\145\1\uffff\1\164\1\44\2\uffff\1\44"+
+        "\1\145\1\144\1\156\1\uffff\1\150\1\155\1\164\1\171\1\156\1\163\1"+
+        "\156\1\150\1\145\1\151\1\160\1\144\1\160\1\154\1\164\2\44\1\162"+
+        "\1\151\1\145\1\157\2\44\1\155\2\145\1\164\1\145\1\144\1\143\1\145"+
+        "\2\164\1\uffff\1\165\1\44\1\uffff\1\163\1\164\1\44\1\167\2\164\1"+
+        "\154\1\157\1\164\1\151\1\uffff\1\145\1\uffff\1\164\1\44\1\144\1"+
+        "\145\1\44\1\155\2\uffff\1\162\1\157\1\44\1\164\1\141\3\44\1\145"+
+        "\2\157\1\162\1\163\1\157\1\145\3\44\2\uffff\1\163\1\157\1\44\1\167"+
+        "\2\uffff\2\141\1\44\1\127\2\44\1\145\2\44\1\145\1\160\1\uffff\1"+
+        "\44\1\111\1\uffff\1\157\1\151\1\123\1\44\1\143\1\150\1\147\3\44"+
+        "\1\uffff\2\44\1\uffff\1\141\1\44\1\167\1\uffff\1\156\1\160\1\164"+
+        "\3\uffff\1\44\1\167\1\162\1\163\1\164\1\156\1\44\3\uffff\1\145\1"+
+        "\156\1\uffff\1\44\2\164\1\uffff\1\141\2\uffff\1\44\2\uffff\1\162"+
+        "\1\44\1\uffff\1\156\1\162\1\157\1\145\1\uffff\1\141\1\44\1\150\1"+
+        "\163\5\uffff\1\160\1\uffff\1\44\1\145\2\44\1\uffff\1\154\1\151\1"+
+        "\141\1\162\1\163\1\uffff\1\144\1\44\1\uffff\1\44\1\127\1\151\1\uffff"+
+        "\1\127\1\uffff\1\146\1\144\1\156\1\162\1\154\1\uffff\1\164\2\44"+
+        "\1\uffff\1\163\2\uffff\1\145\1\172\1\154\1\141\1\145\1\44\2\uffff"+
+        "\1\141\1\164\1\141\1\157\2\44\1\166\1\145\1\44\2\uffff\1\163\1\144"+
+        "\1\141\1\44\1\164\1\44\1\uffff\1\151\1\44\1\151\1\44\2\uffff\1\151"+
+        "\1\44\1\uffff\1\44\1\147\1\164\1\uffff\1\151\1\uffff\1\164\1\uffff"+
+        "\1\164\1\uffff\1\143\2\uffff\1\145\1\151\1\157\2\44\1\145\1\44\1"+
+        "\157\1\156\2\uffff\1\44\1\uffff\1\156\1\44\1\uffff\1\44\2\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\151\1"+
+        "\170\1\171\1\164\1\165\1\157\1\156\2\157\1\165\1\145\1\171\2\165"+
+        "\1\151\1\172\2\165\1\161\1\157\2\164\1\151\1\162\1\141\1\165\1\141"+
+        "\1\162\12\uffff\1\72\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75"+
+        "\5\uffff\1\74\4\uffff\1\162\1\163\1\uffff\1\164\1\162\1\156\1\145"+
+        "\1\163\1\157\1\160\1\162\1\164\1\151\1\156\1\160\1\172\1\124\1\172"+
+        "\1\146\1\172\1\154\1\170\1\156\1\157\1\162\1\157\1\164\1\156\1\165"+
+        "\1\164\1\162\1\147\2\171\1\172\1\170\1\160\1\162\1\164\1\61\1\141"+
+        "\1\155\1\154\1\151\1\163\1\162\1\164\1\151\1\172\2\164\1\144\1\162"+
+        "\1\155\1\167\1\154\1\157\1\162\1\164\1\144\1\172\1\162\1\166\1\147"+
+        "\1\167\1\150\1\143\1\162\1\145\1\122\1\106\1\172\1\164\1\166\1\163"+
+        "\1\157\1\146\1\156\1\171\1\141\1\146\1\171\1\151\1\163\1\162\2\156"+
+        "\2\145\1\162\1\164\1\170\1\143\15\uffff\1\154\12\uffff\2\172\1\151"+
+        "\1\145\1\157\1\70\1\156\1\145\1\164\1\162\1\145\1\157\1\145\1\172"+
+        "\1\162\1\144\1\164\1\143\1\157\1\147\1\156\1\uffff\1\157\2\164\1"+
+        "\145\1\151\1\164\1\uffff\1\172\1\uffff\1\163\1\145\1\154\1\141\1"+
+        "\143\1\155\1\172\1\154\1\145\1\147\1\142\1\145\1\151\1\147\1\172"+
+        "\1\147\1\171\1\172\1\145\1\uffff\1\164\1\145\1\157\1\172\1\144\1"+
+        "\162\1\141\1\146\1\147\1\164\1\156\1\153\1\164\1\144\1\150\1\154"+
+        "\1\151\1\uffff\1\145\1\151\1\172\1\145\1\155\1\145\1\172\1\154\1"+
+        "\143\1\156\1\143\1\164\2\145\1\146\1\uffff\1\143\1\145\1\151\1\165"+
+        "\1\157\1\150\1\172\1\145\1\141\1\142\1\162\1\145\1\155\1\141\1\156"+
+        "\1\uffff\1\141\1\164\1\151\2\141\1\160\1\172\1\164\1\145\1\157\1"+
+        "\143\1\64\1\153\1\155\1\156\1\164\1\120\1\151\1\70\1\145\1\164\1"+
+        "\165\2\141\1\163\1\164\1\150\1\143\1\151\1\161\1\157\2\uffff\1\142"+
+        "\1\156\1\162\1\172\1\63\1\164\1\172\1\151\1\145\1\162\1\154\1\144"+
+        "\1\uffff\1\143\1\172\1\143\1\150\1\162\1\145\1\164\1\165\1\164\1"+
+        "\172\1\162\1\163\1\141\1\uffff\1\145\2\144\1\154\1\164\1\172\1\uffff"+
+        "\1\145\1\147\1\172\1\154\1\172\1\156\1\145\1\157\1\164\1\141\1\uffff"+
+        "\1\147\1\172\1\163\1\uffff\3\172\1\167\1\120\1\157\1\163\1\162\1"+
+        "\143\1\162\1\uffff\1\141\1\144\1\156\1\142\1\150\1\172\1\151\1\172"+
+        "\1\150\1\157\1\172\1\145\1\163\1\143\1\157\1\uffff\1\172\1\141\1"+
+        "\172\1\uffff\1\172\2\153\2\157\1\162\2\172\1\137\1\65\1\64\1\157"+
+        "\1\162\1\163\1\151\1\162\1\166\1\164\1\uffff\1\162\2\172\1\104\1"+
+        "\141\1\143\1\157\1\151\2\172\2\162\1\143\1\171\1\165\1\154\1\uffff"+
+        "\1\172\1\104\1\165\1\145\1\61\1\141\1\145\1\164\1\172\1\162\1\160"+
+        "\1\172\1\63\1\141\1\162\1\151\1\155\1\162\1\164\1\157\1\151\1\104"+
+        "\1\172\1\150\1\143\1\165\1\144\1\154\1\163\1\172\1\163\1\uffff\1"+
+        "\172\1\70\1\172\1\uffff\1\143\3\172\1\154\1\165\1\150\1\uffff\1"+
+        "\150\1\162\1\164\1\172\1\151\1\143\1\160\1\141\1\uffff\1\103\1\151"+
+        "\1\156\3\172\1\154\1\151\1\uffff\1\141\1\145\1\uffff\1\145\1\uffff"+
+        "\1\147\1\163\1\141\1\162\1\144\1\145\1\uffff\1\154\2\uffff\1\146"+
+        "\1\uffff\1\172\1\101\1\167\1\145\1\157\1\162\1\151\1\164\1\172\1"+
+        "\151\1\154\1\164\1\uffff\1\156\1\uffff\1\172\1\167\1\141\1\uffff"+
+        "\1\172\1\164\1\172\1\156\1\uffff\1\154\2\uffff\2\172\1\144\1\156"+
+        "\1\154\1\163\2\uffff\1\163\5\172\1\61\1\144\1\163\1\164\1\145\1"+
+        "\156\1\145\2\172\2\uffff\1\162\1\164\1\145\1\165\1\154\1\uffff\1"+
+        "\141\1\162\1\uffff\1\157\1\151\1\145\1\172\1\154\1\141\1\uffff\1"+
+        "\151\1\164\1\172\1\67\1\147\1\156\1\122\1\uffff\1\151\1\150\1\uffff"+
+        "\1\172\1\142\1\71\1\63\1\62\1\157\1\147\1\156\1\172\1\145\1\162"+
+        "\1\157\1\162\1\uffff\1\172\1\157\3\145\1\163\1\151\1\uffff\1\172"+
+        "\1\163\1\uffff\2\172\1\uffff\1\172\1\141\1\172\3\uffff\1\172\1\154"+
+        "\2\172\1\157\1\172\1\uffff\1\164\1\150\1\163\1\154\1\150\1\142\1"+
+        "\143\2\uffff\1\172\1\uffff\1\171\1\157\1\156\1\162\2\172\1\164\1"+
+        "\162\1\157\1\172\1\162\1\164\1\141\1\172\1\uffff\1\144\1\172\1\162"+
+        "\1\167\2\145\1\147\1\141\1\172\1\uffff\1\172\1\157\1\172\1\147\1"+
+        "\uffff\1\127\1\163\1\uffff\1\151\1\uffff\1\163\1\172\1\uffff\1\145"+
+        "\1\141\1\uffff\1\145\1\172\1\151\2\172\5\uffff\1\67\3\145\1\166"+
+        "\2\172\2\uffff\1\141\2\151\1\156\1\172\1\164\1\157\1\171\1\160\1"+
+        "\102\1\uffff\1\164\1\171\1\163\1\172\1\uffff\1\172\1\145\1\164\1"+
+        "\151\1\165\1\157\1\145\1\156\1\145\1\uffff\1\141\2\172\1\70\1\154"+
+        "\1\165\1\172\1\145\1\uffff\1\127\1\124\1\156\1\141\1\uffff\1\144"+
+        "\1\145\3\172\1\157\1\uffff\1\172\3\uffff\1\143\2\uffff\1\145\2\uffff"+
+        "\1\156\1\uffff\1\171\1\104\1\172\1\123\1\141\1\154\1\145\1\uffff"+
+        "\1\172\1\156\2\172\2\uffff\1\124\1\144\1\153\1\uffff\1\172\1\151"+
+        "\1\164\1\uffff\1\144\1\uffff\1\120\1\163\1\156\1\145\1\147\1\142"+
+        "\1\uffff\1\145\1\143\1\uffff\1\172\1\145\1\151\1\163\1\166\1\172"+
+        "\1\uffff\1\166\1\164\1\124\1\uffff\1\156\2\uffff\3\172\1\162\1\145"+
+        "\2\uffff\1\167\1\157\1\160\1\164\1\uffff\1\162\1\166\1\127\1\164"+
+        "\1\145\1\162\1\172\1\124\1\160\2\uffff\2\172\1\162\2\164\1\162\1"+
+        "\160\1\164\2\162\2\uffff\1\172\1\163\1\162\1\uffff\1\166\1\151\1"+
+        "\171\1\172\1\167\1\145\1\125\3\uffff\1\156\1\uffff\1\150\1\172\1"+
+        "\151\1\172\1\145\1\uffff\1\164\1\166\1\162\1\145\1\157\1\uffff\1"+
+        "\172\2\uffff\1\145\1\172\1\145\1\172\1\uffff\1\157\1\145\1\162\1"+
+        "\147\1\141\1\162\1\155\1\145\1\127\1\156\1\145\1\141\1\144\1\153"+
+        "\1\uffff\1\151\1\144\1\167\1\145\1\uffff\2\145\1\171\1\145\3\uffff"+
+        "\1\102\1\172\1\145\1\156\1\164\1\172\4\151\1\144\1\151\1\uffff\1"+
+        "\151\1\145\1\154\1\uffff\1\160\1\154\1\165\1\145\1\uffff\1\143\1"+
+        "\155\1\172\1\155\1\157\1\145\1\141\1\172\1\160\1\uffff\1\172\1\141"+
+        "\1\151\1\156\1\160\1\uffff\1\145\1\172\1\157\1\145\1\171\1\156\1"+
+        "\172\1\151\1\172\1\uffff\1\172\1\uffff\1\166\1\141\1\145\1\141\1"+
+        "\172\1\146\1\162\1\uffff\1\170\1\uffff\1\172\1\uffff\1\156\1\172"+
+        "\2\145\1\155\2\163\1\151\1\141\1\162\1\151\1\110\2\162\2\172\1\147"+
+        "\1\164\1\157\1\172\1\162\1\172\1\160\1\172\1\151\1\uffff\1\162\2"+
+        "\172\1\uffff\1\170\1\144\1\156\1\157\1\40\1\147\1\164\1\170\1\141"+
+        "\1\145\1\157\1\153\1\164\1\166\1\157\1\141\1\uffff\1\141\2\162\1"+
+        "\154\1\uffff\1\141\1\uffff\1\164\1\143\1\144\1\145\1\162\1\uffff"+
+        "\1\162\2\160\1\151\1\uffff\1\156\1\uffff\1\145\1\151\1\164\1\156"+
+        "\1\143\1\uffff\1\172\1\157\1\164\1\uffff\1\172\1\uffff\1\163\1\156"+
+        "\1\145\1\163\1\151\1\156\1\151\1\114\1\144\1\145\2\172\2\uffff\2"+
+        "\150\1\162\1\uffff\1\163\1\uffff\1\145\1\uffff\1\164\1\172\2\uffff"+
+        "\1\172\1\145\1\144\1\156\1\uffff\1\150\1\155\1\164\1\171\1\156\1"+
+        "\163\1\156\1\150\1\145\1\151\1\160\1\144\1\160\1\154\1\164\2\172"+
+        "\1\162\1\151\1\145\1\157\2\172\1\155\2\145\1\164\1\145\1\144\1\143"+
+        "\1\145\2\164\1\uffff\1\165\1\172\1\uffff\1\163\1\164\1\172\1\167"+
+        "\2\164\1\154\1\157\1\164\1\151\1\uffff\1\163\1\uffff\1\164\1\172"+
+        "\1\144\1\145\1\172\1\155\2\uffff\1\162\1\157\1\172\1\164\1\141\3"+
+        "\172\1\145\2\157\1\162\1\163\1\157\1\145\3\172\2\uffff\1\163\1\157"+
+        "\1\172\1\167\2\uffff\2\141\1\172\1\127\2\172\1\145\2\172\1\145\1"+
+        "\160\1\uffff\1\172\1\111\1\uffff\1\157\1\151\1\123\1\172\1\143\1"+
+        "\150\1\147\3\172\1\uffff\2\172\1\uffff\1\141\1\172\1\167\1\uffff"+
+        "\1\156\1\160\1\164\3\uffff\1\172\1\167\1\162\1\163\1\164\1\156\1"+
+        "\172\3\uffff\1\145\1\156\1\uffff\1\172\2\164\1\uffff\1\141\2\uffff"+
+        "\1\172\2\uffff\1\162\1\172\1\uffff\1\156\1\162\1\157\1\145\1\uffff"+
+        "\1\141\1\172\1\150\1\163\5\uffff\1\160\1\uffff\1\172\1\145\2\172"+
+        "\1\uffff\1\154\1\151\1\141\1\162\1\163\1\uffff\1\144\1\172\1\uffff"+
+        "\1\172\1\127\1\151\1\uffff\1\127\1\uffff\1\146\1\144\1\156\1\162"+
+        "\1\154\1\uffff\1\164\2\172\1\uffff\1\163\2\uffff\1\145\1\172\1\154"+
+        "\1\141\1\145\1\172\2\uffff\1\141\1\164\1\141\1\157\2\172\1\166\1"+
+        "\145\1\172\2\uffff\1\163\1\144\1\141\1\172\1\164\1\172\1\uffff\1"+
+        "\151\1\172\1\151\1\172\2\uffff\1\151\1\172\1\uffff\1\172\1\147\1"+
+        "\164\1\uffff\1\151\1\uffff\1\164\1\uffff\1\164\1\uffff\1\143\2\uffff"+
+        "\1\145\1\151\1\157\2\172\1\145\1\172\1\157\1\156\2\uffff\1\172\1"+
+        "\uffff\1\156\1\172\1\uffff\1\172\2\uffff";
+    static final String DFA21_acceptS =
+        "\52\uffff\1\172\1\173\1\u0087\1\u00ba\1\u00bb\1\u00c8\1\u00e1\1"+
+        "\u00e2\1\u00e3\1\u00e6\4\uffff\1\u0106\2\u0107\1\u010a\1\u010b\1"+
+        "\uffff\1\23\1\1\1\2\1\u0100\1\3\1\u00fa\1\4\1\35\1\26\1\5\1\20\1"+
+        "\36\1\27\1\6\1\31\1\30\1\7\1\u0108\1\u0109\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\u00ff\1\u00f9\2\uffff"+
+        "\1\u0106\132\uffff\1\172\1\173\1\u0087\1\u00ba\1\u00bb\1\u00c8\1"+
+        "\u00e1\1\u00e2\1\u00e3\1\u00e6\1\u00fe\1\u00ea\1\u0103\1\uffff\1"+
+        "\u0104\1\u0105\1\u0107\1\u010a\1\13\1\11\1\14\1\12\1\21\1\22\25"+
+        "\uffff\1\u0097\6\uffff\1\u00d0\1\uffff\1\u00e7\23\uffff\1\133\21"+
+        "\uffff\1\u00e5\17\uffff\1\114\17\uffff\1\u00ef\37\uffff\1\40\1\u0101"+
+        "\14\uffff\1\u00c9\15\uffff\1\134\6\uffff\1\u00ed\12\uffff\1\u00dc"+
+        "\3\uffff\1\u00f5\12\uffff\1\u00c7\17\uffff\1\u00fc\3\uffff\1\u00f0"+
+        "\22\uffff\1\u008d\20\uffff\1\u00c6\37\uffff\1\130\3\uffff\1\u00e8"+
+        "\7\uffff\1\u00e0\10\uffff\1\120\10\uffff\1\u00b7\2\uffff\1\51\1"+
+        "\uffff\1\54\6\uffff\1\102\1\uffff\1\u0102\1\u0099\1\uffff\1\u00bf"+
+        "\14\uffff\1\u00ab\1\uffff\1\121\3\uffff\1\u00c2\4\uffff\1\104\1"+
+        "\uffff\1\u00a9\1\u00f1\6\uffff\1\125\1\126\17\uffff\1\153\1\154"+
+        "\5\uffff\1\115\2\uffff\1\u00a3\6\uffff\1\116\7\uffff\1\u00ac\2\uffff"+
+        "\1\127\15\uffff\1\u00ec\7\uffff\1\101\2\uffff\1\132\2\uffff\1\u0083"+
+        "\3\uffff\1\u0084\1\u00c1\1\45\6\uffff\1\u00ce\7\uffff\1\46\1\105"+
+        "\1\uffff\1\u00dd\16\uffff\1\u00f3\11\uffff\1\u00bc\4\uffff\1\u0090"+
+        "\2\uffff\1\u00ee\1\uffff\1\167\2\uffff\1\106\2\uffff\1\113\5\uffff"+
+        "\1\143\1\144\1\145\1\146\1\147\7\uffff\1\117\1\112\12\uffff\1\u00df"+
+        "\4\uffff\1\122\11\uffff\1\131\10\uffff\1\u00ca\4\uffff\1\u00f8\6"+
+        "\uffff\1\150\1\uffff\1\152\1\u0080\1\42\1\uffff\1\u0082\1\u00a0"+
+        "\1\uffff\1\u00cf\1\u00e9\1\uffff\1\43\7\uffff\1\u00d3\4\uffff\1"+
+        "\52\1\53\3\uffff\1\u00d2\3\uffff\1\u00f2\1\uffff\1\62\6\uffff\1"+
+        "\u0089\2\uffff\1\u008f\6\uffff\1\123\3\uffff\1\u00db\1\uffff\1\141"+
+        "\1\142\5\uffff\1\u00f4\1\u00cb\4\uffff\1\u00fd\11\uffff\1\u00de"+
+        "\1\162\12\uffff\1\136\1\137\3\uffff\1\u008e\7\uffff\1\165\1\u00cc"+
+        "\1\41\1\uffff\1\151\5\uffff\1\65\5\uffff\1\u00f6\1\uffff\1\47\1"+
+        "\50\4\uffff\1\57\16\uffff\1\100\4\uffff\1\u0088\4\uffff\1\170\1"+
+        "\166\1\111\14\uffff\1\u00eb\3\uffff\1\171\4\uffff\1\u00d9\11\uffff"+
+        "\1\140\5\uffff\1\u00bd\11\uffff\1\u00d1\1\uffff\1\60\7\uffff\1\u00c0"+
+        "\1\uffff\1\56\1\uffff\1\u0085\31\uffff\1\u00c3\3\uffff\1\u00b5\20"+
+        "\uffff\1\u00a6\4\uffff\1\135\1\uffff\1\u0081\5\uffff\1\163\4\uffff"+
+        "\1\44\1\uffff\1\u00d5\5\uffff\1\u00cd\3\uffff\1\u0086\1\uffff\1"+
+        "\u00c5\14\uffff\1\77\1\107\3\uffff\1\103\1\uffff\1\u008a\1\uffff"+
+        "\1\110\2\uffff\1\u00b9\1\u00b1\4\uffff\1\u00fb\41\uffff\1\u00e4"+
+        "\2\uffff\1\u00c4\12\uffff\1\76\1\uffff\1\156\6\uffff\1\u00a1\1\164"+
+        "\22\uffff\1\u00d7\1\u00da\4\uffff\1\u0093\1\u00d8\13\uffff\1\55"+
+        "\2\uffff\1\67\12\uffff\1\u0092\2\uffff\1\u00a4\3\uffff\1\u00be\3"+
+        "\uffff\1\u0098\1\u00d6\1\u00aa\7\uffff\1\u00a5\1\u00a7\1\u00b8\2"+
+        "\uffff\1\u008b\3\uffff\1\u009e\1\uffff\1\174\1\u00f7\1\uffff\1\175"+
+        "\1\176\2\uffff\1\61\4\uffff\1\71\4\uffff\1\157\1\160\1\u0091\1\u00b0"+
+        "\1\124\1\uffff\1\u00d4\4\uffff\1\u00ad\5\uffff\1\u00a2\2\uffff\1"+
+        "\u008c\3\uffff\1\64\1\uffff\1\177\5\uffff\1\74\3\uffff\1\u0094\1"+
+        "\uffff\1\u0096\1\u009a\6\uffff\1\u00b3\1\u009c\11\uffff\1\161\1"+
+        "\u00a8\6\uffff\1\155\4\uffff\1\70\1\72\2\uffff\1\75\3\uffff\1\u00af"+
+        "\1\uffff\1\u00b6\1\uffff\1\u009f\1\uffff\1\63\1\uffff\1\66\1\u0095"+
+        "\11\uffff\1\u009d\1\u009b\1\uffff\1\u00ae\2\uffff\1\73\1\uffff\1"+
+        "\u00b2\1\u00b4";
+    static final String DFA21_specialS =
+        "\1\0\u055d\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\74\2\73\2\74\1\73\22\74\1\73\1\11\1\71\1\61\1\70\1\10\1"+
+            "\3\1\72\1\55\1\56\1\6\1\4\1\57\1\5\1\14\1\7\1\65\11\66\1\64"+
+            "\1\63\1\13\1\1\1\12\1\15\1\54\1\70\1\23\1\70\1\26\4\70\1\24"+
+            "\2\70\1\25\6\70\1\27\7\70\1\62\1\74\1\60\1\67\1\70\1\74\1\35"+
+            "\1\37\1\47\1\43\1\17\1\22\1\32\1\33\1\21\1\46\1\30\1\44\1\50"+
+            "\1\36\1\42\1\45\1\51\1\41\1\20\1\31\1\40\1\16\1\34\3\70\1\52"+
+            "\1\2\1\53\uff82\74",
+            "\1\75\1\76",
+            "\1\100",
+            "\1\102",
+            "\1\105\21\uffff\1\104",
+            "\1\111\17\uffff\1\107\1\110",
+            "\1\114\22\uffff\1\113",
+            "\1\117\4\uffff\1\120\15\uffff\1\116",
+            "\1\122",
+            "\1\124",
+            "\1\126",
+            "\1\130",
+            "\1\132",
+            "\1\135\13\uffff\1\134",
+            "\1\137\7\uffff\1\140",
+            "\1\144\12\uffff\1\146\5\uffff\1\143\3\uffff\1\145\1\uffff"+
+            "\1\142",
+            "\1\151\1\uffff\1\152\16\uffff\1\147\1\150\1\uffff\1\153\1"+
+            "\uffff\1\154",
+            "\1\156\1\uffff\1\162\6\uffff\1\155\1\160\4\uffff\1\157\1\161",
+            "\1\163\7\uffff\1\164\5\uffff\1\167\2\uffff\1\166\2\uffff\1"+
+            "\165",
+            "\1\170",
+            "\1\171",
+            "\1\172",
+            "\1\174\15\uffff\1\173",
+            "\1\175\1\176",
+            "\1\177",
+            "\1\u0082\1\u0081\1\uffff\1\u0084\11\uffff\1\u0080\6\uffff"+
+            "\1\u0083",
+            "\1\u0085\15\uffff\1\u0086\1\uffff\1\u0087",
+            "\1\u0089\3\uffff\1\u008a\11\uffff\1\u008b\5\uffff\1\u0088",
+            "\1\u008c\6\uffff\1\u008e\1\u008d",
+            "\1\u0091\12\uffff\1\u0092\4\uffff\1\u008f\6\uffff\1\u0090",
+            "\1\u0094\3\uffff\1\u0095\11\uffff\1\u0093\5\uffff\1\u0096",
+            "\1\u0098\12\uffff\1\u0097\10\uffff\1\u0099",
+            "\1\u009a\1\uffff\1\u009b\1\u009c",
+            "\1\u009d\3\uffff\1\u009e\5\uffff\1\u009f",
+            "\1\u00a2\2\uffff\1\u00a4\7\uffff\1\u00a5\1\uffff\1\u00a3\1"+
+            "\uffff\1\u00a1\1\uffff\1\u00a0",
+            "\1\u00a7\3\uffff\1\u00a8\3\uffff\1\u00a9\5\uffff\1\u00a6\4"+
+            "\uffff\1\u00aa",
+            "\1\u00ad\3\uffff\1\u00ab\3\uffff\1\u00ac",
+            "\1\u00b0\2\uffff\1\u00af\1\u00b3\6\uffff\1\u00ae\2\uffff\1"+
+            "\u00b2\2\uffff\1\u00b1",
+            "\1\u00b4",
+            "\1\u00b9\12\uffff\1\u00b6\2\uffff\1\u00b5\2\uffff\1\u00b7"+
+            "\2\uffff\1\u00b8",
+            "\1\u00ba",
+            "\1\u00bb",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c6",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\13\uffff\1\u00c8\6\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3"+
+            "\u00cb\5\uffff\1\u00cb\13\uffff\1\u00c8",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\22\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1"+
+            "\u00cb",
+            "\1\141\34\uffff\32\141\4\uffff\1\141\1\uffff\32\141",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ce",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d2",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d4\5\uffff\1\u00d5",
+            "\1\u00d6",
+            "",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc\15\uffff\1\u00dd",
+            "\1\u00de",
+            "\1\u00e0\11\uffff\1\u00df",
+            "\1\u00e2\14\uffff\1\u00e3\5\uffff\1\u00e1",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e7\16\uffff\1\u00e6",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\4\141\1\u00e8\25\141",
+            "\1\u00eb\13\uffff\1\u00ea",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\10\141\1\u00ec\11\141\1\u00ef\1\u00ed\1\141\1\u00ee\4\141",
+            "\1\u00f1",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u00f3",
+            "\1\u00f5\10\uffff\1\u00f6\11\uffff\1\u00f4",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0103\7\uffff\1\u0102\13\uffff\1\u0105\3\uffff\1\u0104",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0112\5\uffff\1\u0111",
+            "\1\u0113\11\uffff\1\u0114\5\uffff\1\u0115",
+            "\1\u0116",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\22\141\1\u0117\7\141",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c\3\uffff\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0122\5\uffff\1\u0121",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\2\141\1\u0126\1\u0127\26\141",
+            "\1\u0129",
+            "\1\u012b\5\uffff\1\u012d\6\uffff\1\u012c\1\uffff\1\u012a",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0135\20\uffff\1\u0134",
+            "\1\u0136",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\26\141\1\u0137\3\141",
+            "\1\u0139",
+            "\1\u013d\5\uffff\1\u013c\6\uffff\1\u013a\2\uffff\1\u013b",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145\25\uffff\1\u0146",
+            "\1\u0147",
+            "\1\u0148\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c\7\uffff\1\u014e\1\uffff\1\u014d",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152\2\uffff\1\u0153\1\u0154",
+            "\1\u0156\5\uffff\1\u0155",
+            "\1\u0157",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\22\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1"+
+            "\u00cb",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015e\6\uffff\1\u015d",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\1\141\1\u0183\15\141\1\u0185\2\141\1\u0184\7\141",
+            "\1\u0187",
+            "\1\u0189\12\uffff\1\u0188",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u018b",
+            "",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\141\13\uffff\12\141\7\uffff\1\141\1\u0192\6\141\1\u018f"+
+            "\4\141\1\u0190\4\141\1\u0193\1\u0194\1\u0191\5\141\4\uffff\1"+
+            "\141\1\uffff\32\141",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0\1\u01b1\1\uffff\1\u01b3\1\u01b2",
+            "\1\u01b4",
+            "",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8\2\uffff\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0\3\uffff\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "",
+            "\1\u01c6",
+            "\1\u01c8\20\uffff\1\u01c7",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01da\6\uffff\1\u01d9",
+            "\1\u01db",
+            "\1\u01dd\15\uffff\1\u01dc",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e4\2\uffff\1\u01e3",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "",
+            "",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\u01ec\1\uffff"+
+            "\32\141",
+            "\1\u01ef\1\u01ee",
+            "\1\u01f0",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01f3\3\uffff\1\u01f2",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "",
+            "\1\u01f8",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\10\141\1\u0201\21\141",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\u020a",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u020f",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0211",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "",
+            "\1\u0216",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0218",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\16\141\1\u021b\13\141",
+            "\1\u021d",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u022a",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\141\13\uffff\12\141\7\uffff\17\141\1\u022e\12\141\4\uffff"+
+            "\1\141\1\uffff\32\141",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232",
+            "\1\u0233",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0235",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\u023d\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0240",
+            "\1\u0241\1\u0242\1\u0243\1\u0244\1\u0245",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "",
+            "\1\u024e",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0251",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\17\141\1\u0258\12\141\4\uffff"+
+            "\1\141\1\uffff\14\141\1\u0257\15\141",
+            "\1\u025a",
+            "\1\u025b",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\u025e",
+            "\1\u025f",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0261",
+            "\1\u0262",
+            "\1\u0263",
+            "\1\u0264",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\u0267",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0269",
+            "\1\u026a",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u026c",
+            "\1\u0270\1\uffff\1\u026e\5\uffff\1\u026f\47\uffff\1\u026d",
+            "\1\u0271",
+            "\1\u0272",
+            "\1\u0273",
+            "\1\u0274",
+            "\1\u0275",
+            "\1\u0276",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u027a",
+            "\1\u027b",
+            "\1\u027c",
+            "\1\u027d",
+            "\1\u027e",
+            "\1\u027f\16\uffff\1\u0280",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0282",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\u0283\1\uffff"+
+            "\32\141",
+            "\1\u0285",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\22\141\1\u0286\7\141",
+            "",
+            "\1\u0288",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\14\141\1\u0289\5\141\1\u028a\7\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u028e",
+            "\1\u028f",
+            "\1\u0290",
+            "",
+            "\1\u0291",
+            "\1\u0292",
+            "\1\u0293",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0295",
+            "\1\u0296",
+            "\1\u0297",
+            "\1\u0298",
+            "",
+            "\1\u0299",
+            "\1\u029a",
+            "\1\u029b",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\22\141\1\u029e\7\141",
+            "\1\u02a0",
+            "\1\u02a1",
+            "",
+            "\1\u02a2",
+            "\1\u02a3",
+            "",
+            "\1\u02a4",
+            "",
+            "\1\u02a5",
+            "\1\u02a6",
+            "\1\u02a7",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\u02aa",
+            "",
+            "\1\u02ab\2\uffff\1\u02ac",
+            "",
+            "",
+            "\1\u02ad",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02af",
+            "\1\u02b0",
+            "\1\u02b1",
+            "\1\u02b2",
+            "\1\u02b3\14\uffff\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\22\141\1\u02b7\7\141",
+            "\1\u02b9",
+            "\1\u02ba",
+            "\1\u02bb",
+            "",
+            "\1\u02bc",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02be",
+            "\1\u02bf",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02c1",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02c3",
+            "",
+            "\1\u02c4",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\21\141\1\u02c7\10\141\4\uffff"+
+            "\1\141\1\uffff\21\141\1\u02c6\10\141",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\1\u02cb",
+            "\1\u02cc",
+            "",
+            "",
+            "\1\u02cd",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02d3",
+            "\1\u02d4",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\u02d8",
+            "\1\u02d9",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "\1\u02dc",
+            "\1\u02dd",
+            "\1\u02de",
+            "\1\u02df",
+            "\1\u02e0",
+            "",
+            "\1\u02e1",
+            "\1\u02e2",
+            "",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02e7",
+            "\1\u02e8",
+            "",
+            "\1\u02e9",
+            "\1\u02ea",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02ec",
+            "\1\u02ed",
+            "\1\u02ee",
+            "\1\u02ef\1\u02f0\12\uffff\1\u02f1\3\uffff\1\u02f2",
+            "",
+            "\1\u02f3",
+            "\1\u02f4",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u02f6",
+            "\1\u02f7",
+            "\1\u02f8",
+            "\1\u02f9",
+            "\1\u02fa",
+            "\1\u02fb",
+            "\1\u02fc",
+            "\1\141\13\uffff\12\141\7\uffff\3\141\1\u02fd\26\141\4\uffff"+
+            "\1\141\1\uffff\32\141",
+            "\1\u02ff",
+            "\1\u0300",
+            "\1\u0301",
+            "\1\u0302",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0304",
+            "\1\u0305",
+            "\1\u0306",
+            "\1\u0307",
+            "\1\u0308",
+            "\1\u0309",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u030b",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u030f",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0312",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0315",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0317",
+            "\1\u0318",
+            "\1\u0319",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\u031c",
+            "\1\u031d",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u031f",
+            "\1\u0320",
+            "\1\u0321",
+            "\1\u0322",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0325",
+            "\1\u0326",
+            "\1\u0327",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0329",
+            "\1\u032a",
+            "\1\u032b",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u032d",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u032f",
+            "\1\u0330",
+            "\1\u0331",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\u0334",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0336",
+            "\1\u0337",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0339",
+            "",
+            "\1\u033a\16\uffff\1\u033b",
+            "\1\u033c",
+            "",
+            "\1\u033d",
+            "",
+            "\1\u033e",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0340",
+            "\1\u0341",
+            "",
+            "\1\u0342",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0344",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0347",
+            "\1\u0348",
+            "\1\u0349",
+            "\1\u034a",
+            "\1\u034b",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "\1\u034e",
+            "\1\u034f",
+            "\1\u0350",
+            "\1\u0351",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0353",
+            "\1\u0354",
+            "\1\u0355",
+            "\1\u0357\15\uffff\1\u0356",
+            "\1\u0358",
+            "",
+            "\1\u0359",
+            "\1\u035a",
+            "\1\u035b",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u035e",
+            "\1\u035f",
+            "\1\u0360\7\uffff\1\u0361",
+            "\1\u0362",
+            "\1\u0363",
+            "\1\u0364",
+            "\1\u0365",
+            "\1\u0366",
+            "",
+            "\1\u0367",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u036a",
+            "\1\u036b",
+            "\1\u036c",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u036e",
+            "",
+            "\1\u036f",
+            "\1\u0370",
+            "\1\u0371",
+            "\1\u0372",
+            "",
+            "\1\u0373",
+            "\1\u0374",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0378",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "",
+            "\1\u037a",
+            "",
+            "",
+            "\1\u037b",
+            "",
+            "",
+            "\1\u037c",
+            "",
+            "\1\u037d",
+            "\1\u037e",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0381\15\uffff\1\u0380",
+            "\1\u0382",
+            "\1\u0383",
+            "\1\u0384",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0386",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "",
+            "\1\u0389",
+            "\1\u038a",
+            "\1\u038b",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\22\141\1\u038c\7\141",
+            "\1\u038e",
+            "\1\u038f",
+            "",
+            "\1\u0390",
+            "",
+            "\1\u0391\3\uffff\1\u0394\10\uffff\1\u0392\1\uffff\1\u0393",
+            "\1\u0395",
+            "\1\u0396",
+            "\1\u0397",
+            "\1\u0398",
+            "\1\u0399",
+            "",
+            "\1\u039a",
+            "\1\u039b",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u039d",
+            "\1\u039e",
+            "\1\u039f",
+            "\1\u03a0",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u03a2",
+            "\1\u03a3",
+            "\1\u03a4",
+            "",
+            "\1\u03a5",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u03a9",
+            "\1\u03aa",
+            "",
+            "",
+            "\1\u03ab",
+            "\1\u03ac",
+            "\1\u03ad",
+            "\1\u03ae",
+            "",
+            "\1\u03af",
+            "\1\u03b0",
+            "\1\u03b1",
+            "\1\u03b2",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u03b6\21\uffff\1\u03b7",
+            "\1\u03b8",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\1\u03bc\1\141\1\u03bb\13\141"+
+            "\1\u03ba\2\141\1\u03bd\10\141\4\uffff\1\141\1\uffff\32\141",
+            "\1\u03bf",
+            "\1\u03c0",
+            "\1\u03c1",
+            "\1\u03c2",
+            "\1\u03c3",
+            "\1\u03c4",
+            "\1\u03c5",
+            "\1\u03c6",
+            "",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\u03c7\1\uffff"+
+            "\32\141",
+            "\1\u03c9",
+            "\1\u03ca",
+            "",
+            "\1\u03cb",
+            "\1\u03cc",
+            "\1\u03cd",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u03cf",
+            "\1\u03d0",
+            "\1\u03d1\13\uffff\1\u03d2\1\uffff\1\u03d3\1\u03d4",
+            "",
+            "",
+            "",
+            "\1\u03d5",
+            "",
+            "\1\u03d6",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\21\141\1\u03d7\10\141",
+            "\1\u03d9",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u03db",
+            "",
+            "\1\u03dc",
+            "\1\u03dd",
+            "\1\u03de",
+            "\1\u03df",
+            "\1\u03e0",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\6\141\1\u03e1\23\141",
+            "",
+            "",
+            "\1\u03e3",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u03e5",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u03e7",
+            "\1\u03e8",
+            "\1\u03e9",
+            "\1\u03ea",
+            "\1\u03eb",
+            "\1\u03ec\15\uffff\1\u03ed\2\uffff\1\u03ee",
+            "\1\u03ef",
+            "\1\u03f0",
+            "\1\u03f1",
+            "\1\u03f2",
+            "\1\u03f3",
+            "\1\u03f4",
+            "\1\u03f5",
+            "\1\u03f6",
+            "",
+            "\1\u03f7",
+            "\1\u03f8",
+            "\1\u03f9",
+            "\1\u03fa",
+            "",
+            "\1\u03fb",
+            "\1\u03fc",
+            "\1\u03fd",
+            "\1\u03fe",
+            "",
+            "",
+            "",
+            "\1\u03ff",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0401",
+            "\1\u0402",
+            "\1\u0403",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0405",
+            "\1\u0406",
+            "\1\u0407",
+            "\1\u0408",
+            "\1\u0409",
+            "\1\u040a",
+            "",
+            "\1\u040b",
+            "\1\u040c",
+            "\1\u040d",
+            "",
+            "\1\u040e",
+            "\1\u040f",
+            "\1\u0410\21\uffff\1\u0411",
+            "\1\u0412",
+            "",
+            "\1\u0413",
+            "\1\u0414",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0416",
+            "\1\u0417",
+            "\1\u0418",
+            "\1\u0419",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u041b",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u041d",
+            "\1\u041e",
+            "\1\u041f",
+            "\1\u0420",
+            "",
+            "\1\u0421",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0423",
+            "\1\u0424",
+            "\1\u0425",
+            "\1\u0426",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0428",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u042a",
+            "",
+            "\1\u042b",
+            "\1\u042c",
+            "\1\u042d",
+            "\1\u042e",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0430",
+            "\1\u0431",
+            "",
+            "\1\u0432",
+            "",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0434",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0436",
+            "\1\u0437",
+            "\1\u0438",
+            "\1\u0439",
+            "\1\u043a",
+            "\1\u043b",
+            "\1\u043c",
+            "\1\u043d",
+            "\1\u043e",
+            "\1\u043f",
+            "\1\u0440",
+            "\1\u0441",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0444",
+            "\1\u0445",
+            "\1\u0446",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u0448",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u044a",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\u044c",
+            "",
+            "\1\u044d",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "\1\141\13\uffff\12\141\7\uffff\32\141\4\uffff\1\141\1\uffff"+
+            "\32\141",
+            "",
+            "\1\u0450",
+            "\1\u0451",
+            "\1\u0452",
+            "\1\u0453",
+            "\1\u0454",
+            "\1\u0455",
+            "\1\u0456",
+            "\1\u0457",
+            "\1\u0458",
+            "\1\u0459",
+            "\1\u045a",
+            "\1\u045b",
+            "\1\u045c",
+            "\1\u045e\13\uffff\1\u045f\2\uffff\1\u045d",
+            "\1\u0460",
+            "\1\u0461",
+            "",
+            "\1\u0462",
+            "\1\u0463",
+            "\1\u0464",
+            "\1\u0465",
+            "",
+            "\1\u0466",
+            "",
+            "\1\u0467",
+            "\1\u0468",
+            "\1\u0469",
+            "\1\u046a",
+            "\1\u046b",
+            "",
+            "\1\u046c",
+            "\1\u046d",
+            "\1\u046e",
+            "\1\u046f",
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLParser.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLParser.java
new file mode 100644
index 0000000..ed973f2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.services.StatemachineDSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+interface InternalStatemachineDSLParserSignatures {
+     void entryRuleStatemachineModel() throws RecognitionException;
+     void ruleStatemachineModel() throws RecognitionException;
+     void entryRuleStatemachinePackage() throws RecognitionException;
+     void ruleStatemachinePackage() throws RecognitionException;
+     void entryRuleStatemachine() throws RecognitionException;
+     void ruleStatemachine() throws RecognitionException;
+     void entryRuleStatemachineEvent() throws RecognitionException;
+     void ruleStatemachineEvent() throws RecognitionException;
+     void entryRuleStatemachineState() throws RecognitionException;
+     void ruleStatemachineState() throws RecognitionException;
+     void entryRuleStatemachineTrigger() throws RecognitionException;
+     void ruleStatemachineTrigger() throws RecognitionException;
+     void entryRuleStatemachineAction() throws RecognitionException;
+     void ruleStatemachineAction() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralBlinkRate() throws RecognitionException;
+     void ruleStatemachineActionPeripheralBlinkRate() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralClear() throws RecognitionException;
+     void ruleStatemachineActionPeripheralClear() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralCreateWindow() throws RecognitionException;
+     void ruleStatemachineActionPeripheralCreateWindow() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralCursorType() throws RecognitionException;
+     void ruleStatemachineActionPeripheralCursorType() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralDestroyWindow() throws RecognitionException;
+     void ruleStatemachineActionPeripheralDestroyWindow() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralDeviceBrightness() throws RecognitionException;
+     void ruleStatemachineActionPeripheralDeviceBrightness() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralDisplayBitmap() throws RecognitionException;
+     void ruleStatemachineActionPeripheralDisplayBitmap() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralDisplayText() throws RecognitionException;
+     void ruleStatemachineActionPeripheralDisplayText() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralDisplayTextAt() throws RecognitionException;
+     void ruleStatemachineActionPeripheralDisplayTextAt() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralInterCharacterWait() throws RecognitionException;
+     void ruleStatemachineActionPeripheralInterCharacterWait() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralMarqueeFormat() throws RecognitionException;
+     void ruleStatemachineActionPeripheralMarqueeFormat() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralMarqueeRepeatWait() throws RecognitionException;
+     void ruleStatemachineActionPeripheralMarqueeRepeatWait() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralMarqueeType() throws RecognitionException;
+     void ruleStatemachineActionPeripheralMarqueeType() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralMarqueeUnitWait() throws RecognitionException;
+     void ruleStatemachineActionPeripheralMarqueeUnitWait() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralScroll() throws RecognitionException;
+     void ruleStatemachineActionPeripheralScroll() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralOpenDrawer() throws RecognitionException;
+     void ruleStatemachineActionPeripheralOpenDrawer() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintBarcode() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintBarcode() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintBitmap() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintBitmap() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintCut() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintCut() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintNormal() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintNormal() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintRegisterBitmap() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintRegisterBitmap() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTOpen() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTOpen() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTClose() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTClose() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTAcknowledge() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTAcknowledge() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTReversal() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTReversal() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTRegistration() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTRegistration() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTAuthorization() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTAuthorization() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPTResponse() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPTResponse() throws RecognitionException;
+     void entryRuleStatemachineActionPeripheralPrintReport() throws RecognitionException;
+     void ruleStatemachineActionPeripheralPrintReport() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSource() throws RecognitionException;
+     void ruleStatemachineActionFieldSource() throws RecognitionException;
+     void entryRuleStatemachineOperation() throws RecognitionException;
+     void ruleStatemachineOperation() throws RecognitionException;
+     void entryRuleStatemachineGuard() throws RecognitionException;
+     void ruleStatemachineGuard() throws RecognitionException;
+     void entryRuleStatemachineFunction() throws RecognitionException;
+     void ruleStatemachineFunction() throws RecognitionException;
+     void entryRuleStatemachineStorage() throws RecognitionException;
+     void ruleStatemachineStorage() throws RecognitionException;
+     void entryRuleStatemachineStorageRetrieve() throws RecognitionException;
+     void ruleStatemachineStorageRetrieve() throws RecognitionException;
+     void entryRuleStatemachineActionConditionalTransition() throws RecognitionException;
+     void ruleStatemachineActionConditionalTransition() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceString() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceString() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceNumber() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceNumber() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceEvaluate() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceEvaluate() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceEvent() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceEvent() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceTranslate() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceTranslate() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceDtoAttribute() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceDtoAttribute() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceStringMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceStringMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceNumberMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceNumberMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceEvaluateMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceEvaluateMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceTranslateMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceTranslateMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldGetMore() throws RecognitionException;
+     void ruleStatemachineActionFieldGetMore() throws RecognitionException;
+     void entryRuleStatemachineOperationMore() throws RecognitionException;
+     void ruleStatemachineOperationMore() throws RecognitionException;
+     void entryRuleStatemachineStorageRetrieveMore() throws RecognitionException;
+     void ruleStatemachineStorageRetrieveMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSourceDtoAttributeMore() throws RecognitionException;
+     void ruleStatemachineActionFieldSourceDtoAttributeMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldConcatenation() throws RecognitionException;
+     void ruleStatemachineActionFieldConcatenation() throws RecognitionException;
+     void entryRuleStatemachineOperationParameter() throws RecognitionException;
+     void ruleStatemachineOperationParameter() throws RecognitionException;
+     void entryRuleStatemachineOperationParameterMore() throws RecognitionException;
+     void ruleStatemachineOperationParameterMore() throws RecognitionException;
+     void entryRuleStatemachineActionFieldSet() throws RecognitionException;
+     void ruleStatemachineActionFieldSet() throws RecognitionException;
+     void entryRuleStatemachineActionFieldClear() throws RecognitionException;
+     void ruleStatemachineActionFieldClear() throws RecognitionException;
+     void entryRuleStatemachineActionFieldGet() throws RecognitionException;
+     void ruleStatemachineActionFieldGet() throws RecognitionException;
+     void entryRuleStatemachineActionFieldRemove() throws RecognitionException;
+     void ruleStatemachineActionFieldRemove() throws RecognitionException;
+     void entryRuleStatemachineActionItemVisible() throws RecognitionException;
+     void ruleStatemachineActionItemVisible() throws RecognitionException;
+     void entryRuleStatemachineActionItemInvisible() throws RecognitionException;
+     void ruleStatemachineActionItemInvisible() throws RecognitionException;
+     void entryRuleStatemachineActionButtonCaption() throws RecognitionException;
+     void ruleStatemachineActionButtonCaption() throws RecognitionException;
+     void entryRuleStatemachineActionButtonImage() throws RecognitionException;
+     void ruleStatemachineActionButtonImage() throws RecognitionException;
+     void entryRuleStatemachineActionDTOFind() throws RecognitionException;
+     void ruleStatemachineActionDTOFind() throws RecognitionException;
+     void entryRuleStatemachineActionScheduler() throws RecognitionException;
+     void ruleStatemachineActionScheduler() throws RecognitionException;
+     void entryRuleStatemachineControl() throws RecognitionException;
+     void ruleStatemachineControl() throws RecognitionException;
+     void entryRuleStatemachineControlButton() throws RecognitionException;
+     void ruleStatemachineControlButton() throws RecognitionException;
+     void entryRuleStatemachineControlField() throws RecognitionException;
+     void ruleStatemachineControlField() throws RecognitionException;
+     void entryRuleStatemachineControlDTO() throws RecognitionException;
+     void ruleStatemachineControlDTO() throws RecognitionException;
+     void entryRuleStatemachineControlScheduler() throws RecognitionException;
+     void ruleStatemachineControlScheduler() throws RecognitionException;
+     void entryRuleStatemachinePeripheralDeviceLineDisplay() throws RecognitionException;
+     void ruleStatemachinePeripheralDeviceLineDisplay() throws RecognitionException;
+     void entryRuleStatemachinePeripheralDevicePOSPrinter() throws RecognitionException;
+     void ruleStatemachinePeripheralDevicePOSPrinter() throws RecognitionException;
+     void entryRuleStatemachinePeripheralDeviceCashDrawer() throws RecognitionException;
+     void ruleStatemachinePeripheralDeviceCashDrawer() throws RecognitionException;
+     void entryRuleStatemachinePeripheralDevicePT() throws RecognitionException;
+     void ruleStatemachinePeripheralDevicePT() throws RecognitionException;
+     void entryRuleStatemachineControlPeripheral() throws RecognitionException;
+     void ruleStatemachineControlPeripheral() throws RecognitionException;
+     void entryRuleStatemachineControlButtonAttribute() throws RecognitionException;
+     void ruleStatemachineControlButtonAttribute() throws RecognitionException;
+     void entryRuleStatemachineControlButtonAttributeEvent() throws RecognitionException;
+     void ruleStatemachineControlButtonAttributeEvent() throws RecognitionException;
+     void entryRuleStatemachineControlButtonAttributeEventKeyboard() throws RecognitionException;
+     void ruleStatemachineControlButtonAttributeEventKeyboard() throws RecognitionException;
+     void entryRuleStatemachineControlButtonAttributeEventIdentity() throws RecognitionException;
+     void ruleStatemachineControlButtonAttributeEventIdentity() throws RecognitionException;
+     void entryRuleStatemachineControlButtonAttributeEventEvent() throws RecognitionException;
+     void ruleStatemachineControlButtonAttributeEventEvent() throws RecognitionException;
+     void entryRuleStatemachineControlFieldAttribute() throws RecognitionException;
+     void ruleStatemachineControlFieldAttribute() throws RecognitionException;
+     void entryRuleStatemachineControlFieldLayout() throws RecognitionException;
+     void ruleStatemachineControlFieldLayout() throws RecognitionException;
+     void entryRuleStatemachineControlDTOAttribute() throws RecognitionException;
+     void ruleStatemachineControlDTOAttribute() throws RecognitionException;
+     void entryRuleStatemachineControlSchedulerAttribute() throws RecognitionException;
+     void ruleStatemachineControlSchedulerAttribute() throws RecognitionException;
+     void entryRuleStatemachineDTOType() throws RecognitionException;
+     void ruleStatemachineDTOType() throws RecognitionException;
+     void entryRuleStatemachineFieldType() throws RecognitionException;
+     void ruleStatemachineFieldType() throws RecognitionException;
+     void entryRuleStatemachineImport() throws RecognitionException;
+     void ruleStatemachineImport() throws RecognitionException;
+     void entryRuleStatemachineQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleStatemachineQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() throws RecognitionException;
+     void entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleTRANSLATABLESTRING() throws RecognitionException;
+     void ruleTRANSLATABLESTRING() throws RecognitionException;
+     void entryRuleTRANSLATABLEID() throws RecognitionException;
+     void ruleTRANSLATABLEID() throws RecognitionException;
+     void entryRuleSignedNumber() throws RecognitionException;
+     void ruleSignedNumber() throws RecognitionException;
+     void entryRuleUnsignedNumber() throws RecognitionException;
+     void ruleUnsignedNumber() throws RecognitionException;
+     void entryRuleXAnnotation() throws RecognitionException;
+     void ruleXAnnotation() throws RecognitionException;
+     void entryRuleXAnnotationElementValuePair() throws RecognitionException;
+     void ruleXAnnotationElementValuePair() throws RecognitionException;
+     void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     void ruleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     void entryRuleXAnnotationElementValue() throws RecognitionException;
+     void ruleXAnnotationElementValue() throws RecognitionException;
+     void entryRuleXAnnotationOrExpression() throws RecognitionException;
+     void ruleXAnnotationOrExpression() throws RecognitionException;
+     void entryRuleXExpression() throws RecognitionException;
+     void ruleXExpression() throws RecognitionException;
+     void entryRuleXAssignment() throws RecognitionException;
+     void ruleXAssignment() throws RecognitionException;
+     void entryRuleOpSingleAssign() throws RecognitionException;
+     void ruleOpSingleAssign() throws RecognitionException;
+     void entryRuleOpMultiAssign() throws RecognitionException;
+     void ruleOpMultiAssign() throws RecognitionException;
+     void entryRuleXOrExpression() throws RecognitionException;
+     void ruleXOrExpression() throws RecognitionException;
+     void entryRuleOpOr() throws RecognitionException;
+     void ruleOpOr() throws RecognitionException;
+     void entryRuleXAndExpression() throws RecognitionException;
+     void ruleXAndExpression() throws RecognitionException;
+     void entryRuleOpAnd() throws RecognitionException;
+     void ruleOpAnd() throws RecognitionException;
+     void entryRuleXEqualityExpression() throws RecognitionException;
+     void ruleXEqualityExpression() throws RecognitionException;
+     void entryRuleOpEquality() throws RecognitionException;
+     void ruleOpEquality() throws RecognitionException;
+     void entryRuleXRelationalExpression() throws RecognitionException;
+     void ruleXRelationalExpression() throws RecognitionException;
+     void entryRuleOpCompare() throws RecognitionException;
+     void ruleOpCompare() throws RecognitionException;
+     void entryRuleXOtherOperatorExpression() throws RecognitionException;
+     void ruleXOtherOperatorExpression() throws RecognitionException;
+     void entryRuleOpOther() throws RecognitionException;
+     void ruleOpOther() throws RecognitionException;
+     void entryRuleXAdditiveExpression() throws RecognitionException;
+     void ruleXAdditiveExpression() throws RecognitionException;
+     void entryRuleOpAdd() throws RecognitionException;
+     void ruleOpAdd() throws RecognitionException;
+     void entryRuleXMultiplicativeExpression() throws RecognitionException;
+     void ruleXMultiplicativeExpression() throws RecognitionException;
+     void entryRuleOpMulti() throws RecognitionException;
+     void ruleOpMulti() throws RecognitionException;
+     void entryRuleXUnaryOperation() throws RecognitionException;
+     void ruleXUnaryOperation() throws RecognitionException;
+     void entryRuleOpUnary() throws RecognitionException;
+     void ruleOpUnary() throws RecognitionException;
+     void entryRuleXCastedExpression() throws RecognitionException;
+     void ruleXCastedExpression() throws RecognitionException;
+     void entryRuleXPostfixOperation() throws RecognitionException;
+     void ruleXPostfixOperation() throws RecognitionException;
+     void entryRuleOpPostfix() throws RecognitionException;
+     void ruleOpPostfix() throws RecognitionException;
+     void entryRuleXMemberFeatureCall() throws RecognitionException;
+     void ruleXMemberFeatureCall() throws RecognitionException;
+     void entryRuleXPrimaryExpression() throws RecognitionException;
+     void ruleXPrimaryExpression() throws RecognitionException;
+     void entryRuleXLiteral() throws RecognitionException;
+     void ruleXLiteral() throws RecognitionException;
+     void entryRuleXCollectionLiteral() throws RecognitionException;
+     void ruleXCollectionLiteral() throws RecognitionException;
+     void entryRuleXSetLiteral() throws RecognitionException;
+     void ruleXSetLiteral() throws RecognitionException;
+     void entryRuleXListLiteral() throws RecognitionException;
+     void ruleXListLiteral() throws RecognitionException;
+     void entryRuleXClosure() throws RecognitionException;
+     void ruleXClosure() throws RecognitionException;
+     void entryRuleXExpressionInClosure() throws RecognitionException;
+     void ruleXExpressionInClosure() throws RecognitionException;
+     void entryRuleXShortClosure() throws RecognitionException;
+     void ruleXShortClosure() throws RecognitionException;
+     void entryRuleXParenthesizedExpression() throws RecognitionException;
+     void ruleXParenthesizedExpression() throws RecognitionException;
+     void entryRuleXIfExpression() throws RecognitionException;
+     void ruleXIfExpression() throws RecognitionException;
+     void entryRuleXSwitchExpression() throws RecognitionException;
+     void ruleXSwitchExpression() throws RecognitionException;
+     void entryRuleXCasePart() throws RecognitionException;
+     void ruleXCasePart() throws RecognitionException;
+     void entryRuleXForLoopExpression() throws RecognitionException;
+     void ruleXForLoopExpression() throws RecognitionException;
+     void entryRuleXBasicForLoopExpression() throws RecognitionException;
+     void ruleXBasicForLoopExpression() throws RecognitionException;
+     void entryRuleXWhileExpression() throws RecognitionException;
+     void ruleXWhileExpression() throws RecognitionException;
+     void entryRuleXDoWhileExpression() throws RecognitionException;
+     void ruleXDoWhileExpression() throws RecognitionException;
+     void entryRuleXBlockExpression() throws RecognitionException;
+     void ruleXBlockExpression() throws RecognitionException;
+     void entryRuleXExpressionOrVarDeclaration() throws RecognitionException;
+     void ruleXExpressionOrVarDeclaration() throws RecognitionException;
+     void entryRuleXVariableDeclaration() throws RecognitionException;
+     void ruleXVariableDeclaration() throws RecognitionException;
+     void entryRuleJvmFormalParameter() throws RecognitionException;
+     void ruleJvmFormalParameter() throws RecognitionException;
+     void entryRuleFullJvmFormalParameter() throws RecognitionException;
+     void ruleFullJvmFormalParameter() throws RecognitionException;
+     void entryRuleXFeatureCall() throws RecognitionException;
+     void ruleXFeatureCall() throws RecognitionException;
+     void entryRuleFeatureCallID() throws RecognitionException;
+     void ruleFeatureCallID() throws RecognitionException;
+     void entryRuleIdOrSuper() throws RecognitionException;
+     void ruleIdOrSuper() throws RecognitionException;
+     void entryRuleXConstructorCall() throws RecognitionException;
+     void ruleXConstructorCall() throws RecognitionException;
+     void entryRuleXBooleanLiteral() throws RecognitionException;
+     void ruleXBooleanLiteral() throws RecognitionException;
+     void entryRuleXNullLiteral() throws RecognitionException;
+     void ruleXNullLiteral() throws RecognitionException;
+     void entryRuleXNumberLiteral() throws RecognitionException;
+     void ruleXNumberLiteral() throws RecognitionException;
+     void entryRuleXStringLiteral() throws RecognitionException;
+     void ruleXStringLiteral() throws RecognitionException;
+     void entryRuleXTypeLiteral() throws RecognitionException;
+     void ruleXTypeLiteral() throws RecognitionException;
+     void entryRuleXThrowExpression() throws RecognitionException;
+     void ruleXThrowExpression() throws RecognitionException;
+     void entryRuleXReturnExpression() throws RecognitionException;
+     void ruleXReturnExpression() throws RecognitionException;
+     void entryRuleXTryCatchFinallyExpression() throws RecognitionException;
+     void ruleXTryCatchFinallyExpression() throws RecognitionException;
+     void entryRuleXSynchronizedExpression() throws RecognitionException;
+     void ruleXSynchronizedExpression() throws RecognitionException;
+     void entryRuleXCatchClause() throws RecognitionException;
+     void ruleXCatchClause() throws RecognitionException;
+     void entryRuleNumber() throws RecognitionException;
+     void ruleNumber() throws RecognitionException;
+     void entryRuleJvmTypeReference() throws RecognitionException;
+     void ruleJvmTypeReference() throws RecognitionException;
+     void entryRuleArrayBrackets() throws RecognitionException;
+     void ruleArrayBrackets() throws RecognitionException;
+     void entryRuleXFunctionTypeRef() throws RecognitionException;
+     void ruleXFunctionTypeRef() throws RecognitionException;
+     void entryRuleJvmParameterizedTypeReference() throws RecognitionException;
+     void ruleJvmParameterizedTypeReference() throws RecognitionException;
+     void entryRuleJvmArgumentTypeReference() throws RecognitionException;
+     void ruleJvmArgumentTypeReference() throws RecognitionException;
+     void entryRuleJvmWildcardTypeReference() throws RecognitionException;
+     void ruleJvmWildcardTypeReference() throws RecognitionException;
+     void entryRuleJvmUpperBound() throws RecognitionException;
+     void ruleJvmUpperBound() throws RecognitionException;
+     void entryRuleJvmUpperBoundAnded() throws RecognitionException;
+     void ruleJvmUpperBoundAnded() throws RecognitionException;
+     void entryRuleJvmLowerBound() throws RecognitionException;
+     void ruleJvmLowerBound() throws RecognitionException;
+     void entryRuleJvmLowerBoundAnded() throws RecognitionException;
+     void ruleJvmLowerBoundAnded() throws RecognitionException;
+     void entryRuleQualifiedNameWithWildcard() throws RecognitionException;
+     void ruleQualifiedNameWithWildcard() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleStatemachineInternalType() throws RecognitionException;
+     void ruleStatemachineControlButtonEventType() throws RecognitionException;
+     void ruleStatemachineEvaluationType() throws RecognitionException;
+     void ruleStatemachineUserMessageType() throws RecognitionException;
+     void ruleStatemachineLineDisplayCursorType() throws RecognitionException;
+     void ruleStatemachineLineDisplayMarqueeType() throws RecognitionException;
+     void ruleStatemachineLineDisplayMarqueeFormat() throws RecognitionException;
+     void ruleStatemachineLineDisplayTextType() throws RecognitionException;
+     void ruleStatemachineLineDisplayScrollTextType() throws RecognitionException;
+     void ruleStatemachinePOSPrinterBarcodeType() throws RecognitionException;
+     void rule__StatemachineAction__Alternatives() throws RecognitionException;
+     void rule__StatemachineActionFieldSource__Alternatives() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceMore__Alternatives() throws RecognitionException;
+     void rule__StatemachineControl__Alternatives() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEvent__Alternatives() throws RecognitionException;
+     void rule__XAnnotation__Alternatives_3_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException;
+     void rule__XAnnotationElementValue__Alternatives() throws RecognitionException;
+     void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException;
+     void rule__XAssignment__Alternatives() throws RecognitionException;
+     void rule__OpMultiAssign__Alternatives() throws RecognitionException;
+     void rule__OpEquality__Alternatives() throws RecognitionException;
+     void rule__XRelationalExpression__Alternatives_1() throws RecognitionException;
+     void rule__OpCompare__Alternatives() throws RecognitionException;
+     void rule__OpOther__Alternatives() throws RecognitionException;
+     void rule__OpOther__Alternatives_5_1() throws RecognitionException;
+     void rule__OpOther__Alternatives_6_1() throws RecognitionException;
+     void rule__OpAdd__Alternatives() throws RecognitionException;
+     void rule__OpMulti__Alternatives() throws RecognitionException;
+     void rule__XUnaryOperation__Alternatives() throws RecognitionException;
+     void rule__OpUnary__Alternatives() throws RecognitionException;
+     void rule__OpPostfix__Alternatives() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException;
+     void rule__XPrimaryExpression__Alternatives() throws RecognitionException;
+     void rule__XLiteral__Alternatives() throws RecognitionException;
+     void rule__XCollectionLiteral__Alternatives() throws RecognitionException;
+     void rule__XSwitchExpression__Alternatives_2() throws RecognitionException;
+     void rule__XCasePart__Alternatives_3() throws RecognitionException;
+     void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException;
+     void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException;
+     void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException;
+     void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException;
+     void rule__FeatureCallID__Alternatives() throws RecognitionException;
+     void rule__IdOrSuper__Alternatives() throws RecognitionException;
+     void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException;
+     void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException;
+     void rule__Number__Alternatives() throws RecognitionException;
+     void rule__Number__Alternatives_1_0() throws RecognitionException;
+     void rule__Number__Alternatives_1_1_1() throws RecognitionException;
+     void rule__JvmTypeReference__Alternatives() throws RecognitionException;
+     void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException;
+     void rule__XImportDeclaration__Alternatives_1() throws RecognitionException;
+     void rule__XImportDeclaration__Alternatives_1_0_3() throws RecognitionException;
+     void rule__StatemachineInternalType__Alternatives() throws RecognitionException;
+     void rule__StatemachineControlButtonEventType__Alternatives() throws RecognitionException;
+     void rule__StatemachineEvaluationType__Alternatives() throws RecognitionException;
+     void rule__StatemachineUserMessageType__Alternatives() throws RecognitionException;
+     void rule__StatemachineLineDisplayCursorType__Alternatives() throws RecognitionException;
+     void rule__StatemachineLineDisplayMarqueeType__Alternatives() throws RecognitionException;
+     void rule__StatemachineLineDisplayMarqueeFormat__Alternatives() throws RecognitionException;
+     void rule__StatemachineLineDisplayTextType__Alternatives() throws RecognitionException;
+     void rule__StatemachineLineDisplayScrollTextType__Alternatives() throws RecognitionException;
+     void rule__StatemachinePOSPrinterBarcodeType__Alternatives() throws RecognitionException;
+     void rule__StatemachinePackage__Group__0() throws RecognitionException;
+     void rule__StatemachinePackage__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group__1() throws RecognitionException;
+     void rule__StatemachinePackage__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group__2() throws RecognitionException;
+     void rule__StatemachinePackage__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group__3() throws RecognitionException;
+     void rule__StatemachinePackage__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__0() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__1() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__2() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__3() throws RecognitionException;
+     void rule__StatemachinePackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__0() throws RecognitionException;
+     void rule__Statemachine__Group__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__1() throws RecognitionException;
+     void rule__Statemachine__Group__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__2() throws RecognitionException;
+     void rule__Statemachine__Group__2__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__3() throws RecognitionException;
+     void rule__Statemachine__Group__3__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__4() throws RecognitionException;
+     void rule__Statemachine__Group__4__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__5() throws RecognitionException;
+     void rule__Statemachine__Group__5__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__6() throws RecognitionException;
+     void rule__Statemachine__Group__6__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__7() throws RecognitionException;
+     void rule__Statemachine__Group__7__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__8() throws RecognitionException;
+     void rule__Statemachine__Group__8__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__9() throws RecognitionException;
+     void rule__Statemachine__Group__9__Impl() throws RecognitionException;
+     void rule__Statemachine__Group__10() throws RecognitionException;
+     void rule__Statemachine__Group__10__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_2__0() throws RecognitionException;
+     void rule__Statemachine__Group_2__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_2__1() throws RecognitionException;
+     void rule__Statemachine__Group_2__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_3__0() throws RecognitionException;
+     void rule__Statemachine__Group_3__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_3__1() throws RecognitionException;
+     void rule__Statemachine__Group_3__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_8__0() throws RecognitionException;
+     void rule__Statemachine__Group_8__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_8__1() throws RecognitionException;
+     void rule__Statemachine__Group_8__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__0() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__1() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__2() throws RecognitionException;
+     void rule__Statemachine__Group_8_1__2__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_9__0() throws RecognitionException;
+     void rule__Statemachine__Group_9__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_9__1() throws RecognitionException;
+     void rule__Statemachine__Group_9__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_9__2() throws RecognitionException;
+     void rule__Statemachine__Group_9__2__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_9__3() throws RecognitionException;
+     void rule__Statemachine__Group_9__3__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_10__0() throws RecognitionException;
+     void rule__Statemachine__Group_10__0__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_10__1() throws RecognitionException;
+     void rule__Statemachine__Group_10__1__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_10__2() throws RecognitionException;
+     void rule__Statemachine__Group_10__2__Impl() throws RecognitionException;
+     void rule__Statemachine__Group_10__3() throws RecognitionException;
+     void rule__Statemachine__Group_10__3__Impl() throws RecognitionException;
+     void rule__StatemachineEvent__Group__0() throws RecognitionException;
+     void rule__StatemachineEvent__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineEvent__Group__1() throws RecognitionException;
+     void rule__StatemachineEvent__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group__0() throws RecognitionException;
+     void rule__StatemachineState__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group__1() throws RecognitionException;
+     void rule__StatemachineState__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group__2() throws RecognitionException;
+     void rule__StatemachineState__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group__3() throws RecognitionException;
+     void rule__StatemachineState__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group__4() throws RecognitionException;
+     void rule__StatemachineState__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__0() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__1() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__2() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__2__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__3() throws RecognitionException;
+     void rule__StatemachineState__Group_3_0__3__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_1__0() throws RecognitionException;
+     void rule__StatemachineState__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_1__1() throws RecognitionException;
+     void rule__StatemachineState__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__0() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__0__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__1() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__2() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__2__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__3() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2__3__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2_3__0() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2_3__0__Impl() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2_3__1() throws RecognitionException;
+     void rule__StatemachineState__Group_3_2_3__1__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__0() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__1() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__2() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__3() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__4() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__5() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__6() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__7() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__7__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__8() throws RecognitionException;
+     void rule__StatemachineTrigger__Group__8__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__0() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__0__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__1() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__1__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__2() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__2__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__3() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_3__3__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_5__0() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_5__0__Impl() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_5__1() throws RecognitionException;
+     void rule__StatemachineTrigger__Group_5__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralClear__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralClear__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralClear__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralClear__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__7() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__7__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__8() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__8__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__9() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__9__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__10() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__10__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__11() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__11__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__12() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__12__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__13() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__13__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__14() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__Group__14__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDestroyWindow__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDestroyWindow__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDestroyWindow__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDestroyWindow__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group_3__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group_3__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group_3__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__Group_3__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__7() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__7__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__8() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__8__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__9() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group__9__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group_7__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__Group_7__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralOpenDrawer__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralOpenDrawer__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralOpenDrawer__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralOpenDrawer__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group_2__0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group_2__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group_2__1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__Group_2__1__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__0() throws RecognitionException;
+     void rule__StatemachineOperation__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__1() throws RecognitionException;
+     void rule__StatemachineOperation__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__2() throws RecognitionException;
+     void rule__StatemachineOperation__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__3() throws RecognitionException;
+     void rule__StatemachineOperation__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__4() throws RecognitionException;
+     void rule__StatemachineOperation__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineOperation__Group__5() throws RecognitionException;
+     void rule__StatemachineOperation__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group__0() throws RecognitionException;
+     void rule__StatemachineGuard__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group__1() throws RecognitionException;
+     void rule__StatemachineGuard__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group__2() throws RecognitionException;
+     void rule__StatemachineGuard__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__0() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__0__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__1() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__1__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__2() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__2__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__3() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__3__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__4() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__4__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__5() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__5__Impl() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__6() throws RecognitionException;
+     void rule__StatemachineGuard__Group_2__6__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__0() throws RecognitionException;
+     void rule__StatemachineFunction__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__1() throws RecognitionException;
+     void rule__StatemachineFunction__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__2() throws RecognitionException;
+     void rule__StatemachineFunction__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__3() throws RecognitionException;
+     void rule__StatemachineFunction__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__4() throws RecognitionException;
+     void rule__StatemachineFunction__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineFunction__Group__5() throws RecognitionException;
+     void rule__StatemachineFunction__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__0() throws RecognitionException;
+     void rule__StatemachineStorage__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__1() throws RecognitionException;
+     void rule__StatemachineStorage__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__2() throws RecognitionException;
+     void rule__StatemachineStorage__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__3() throws RecognitionException;
+     void rule__StatemachineStorage__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__4() throws RecognitionException;
+     void rule__StatemachineStorage__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineStorage__Group__5() throws RecognitionException;
+     void rule__StatemachineStorage__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__0() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__1() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__2() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__3() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__4() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__0() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__1() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__2() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__3() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__4() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__5() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvent__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvent__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvent__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvent__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslate__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslate__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslate__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslate__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__3() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__3() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__3() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__0() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__1() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__2() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__3() throws RecognitionException;
+     void rule__StatemachineOperationMore__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__0() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__1() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__2() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__3() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__4() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__5() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__6() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__3() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__4() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__5() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__0() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__1() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__2() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__2() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__3() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldClear__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldClear__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldClear__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldClear__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGet__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldGet__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldGet__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldGet__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldRemove__Group__0() throws RecognitionException;
+     void rule__StatemachineActionFieldRemove__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionFieldRemove__Group__1() throws RecognitionException;
+     void rule__StatemachineActionFieldRemove__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionItemVisible__Group__0() throws RecognitionException;
+     void rule__StatemachineActionItemVisible__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionItemVisible__Group__1() throws RecognitionException;
+     void rule__StatemachineActionItemVisible__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionItemInvisible__Group__0() throws RecognitionException;
+     void rule__StatemachineActionItemInvisible__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionItemInvisible__Group__1() throws RecognitionException;
+     void rule__StatemachineActionItemInvisible__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__0() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__1() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__2() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__3() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__0() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__1() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__2() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__3() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__0() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__1() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__2() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__3() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__4() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__5() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineActionScheduler__Group__0() throws RecognitionException;
+     void rule__StatemachineActionScheduler__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineActionScheduler__Group__1() throws RecognitionException;
+     void rule__StatemachineActionScheduler__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__0() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__1() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__2() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__3() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__4() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__5() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__6() throws RecognitionException;
+     void rule__StatemachineControlButton__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__Group__0() throws RecognitionException;
+     void rule__StatemachineControlField__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__Group__1() throws RecognitionException;
+     void rule__StatemachineControlField__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__Group__2() throws RecognitionException;
+     void rule__StatemachineControlField__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__Group__3() throws RecognitionException;
+     void rule__StatemachineControlField__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__Group__4() throws RecognitionException;
+     void rule__StatemachineControlField__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__0() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__1() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__2() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__3() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__4() throws RecognitionException;
+     void rule__StatemachineControlDTO__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__0() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__1() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__2() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__3() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__4() throws RecognitionException;
+     void rule__StatemachineControlScheduler__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceLineDisplay__Group__0() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceLineDisplay__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceLineDisplay__Group__1() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceLineDisplay__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePOSPrinter__Group__0() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePOSPrinter__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePOSPrinter__Group__1() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePOSPrinter__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceCashDrawer__Group__0() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceCashDrawer__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceCashDrawer__Group__1() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceCashDrawer__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePT__Group__0() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePT__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePT__Group__1() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePT__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__0() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__1() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__2() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__3() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__4() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__5() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__6() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__6__Impl() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__7() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__Group__7__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__3() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group_2__0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group_2__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group_2__1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__Group_2__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__0() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__1() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__2() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__3() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldLayout__Group__0() throws RecognitionException;
+     void rule__StatemachineControlFieldLayout__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlFieldLayout__Group__1() throws RecognitionException;
+     void rule__StatemachineControlFieldLayout__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__0() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__1() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__2() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__3() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__4() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group_4__0() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group_4__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group_4__1() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__Group_4__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__0() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__1() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__2() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__2__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__3() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__3__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__4() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__4__Impl() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__5() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__Group__5__Impl() throws RecognitionException;
+     void rule__StatemachineImport__Group__0() throws RecognitionException;
+     void rule__StatemachineImport__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineImport__Group__1() throws RecognitionException;
+     void rule__StatemachineImport__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__StatemachineQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group__0() throws RecognitionException;
+     void rule__QualifiedName__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group__1() throws RecognitionException;
+     void rule__QualifiedName__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group_1__0() throws RecognitionException;
+     void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group_1__1() throws RecognitionException;
+     void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException;
+     void rule__SignedNumber__Group__0() throws RecognitionException;
+     void rule__SignedNumber__Group__0__Impl() throws RecognitionException;
+     void rule__SignedNumber__Group__1() throws RecognitionException;
+     void rule__SignedNumber__Group__1__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group__0() throws RecognitionException;
+     void rule__UnsignedNumber__Group__0__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group__1() throws RecognitionException;
+     void rule__UnsignedNumber__Group__1__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__0() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__0__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__1() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__0() throws RecognitionException;
+     void rule__XAnnotation__Group__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__1() throws RecognitionException;
+     void rule__XAnnotation__Group__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__2() throws RecognitionException;
+     void rule__XAnnotation__Group__2__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__3() throws RecognitionException;
+     void rule__XAnnotation__Group__3__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__2() throws RecognitionException;
+     void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__1() throws RecognitionException;
+     void rule__XAssignment__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__2() throws RecognitionException;
+     void rule__XAssignment__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__3() throws RecognitionException;
+     void rule__XAssignment__Group_0__3__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1__0() throws RecognitionException;
+     void rule__XAssignment__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1__1() throws RecognitionException;
+     void rule__XAssignment__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__1() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__0() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__1() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__2() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__0() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__1() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__2() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group__0() throws RecognitionException;
+     void rule__XOrExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group__1() throws RecognitionException;
+     void rule__XOrExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1__1() throws RecognitionException;
+     void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group__0() throws RecognitionException;
+     void rule__XAndExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group__1() throws RecognitionException;
+     void rule__XAndExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1__1() throws RecognitionException;
+     void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpCompare__Group_1__0() throws RecognitionException;
+     void rule__OpCompare__Group_1__0__Impl() throws RecognitionException;
+     void rule__OpCompare__Group_1__1() throws RecognitionException;
+     void rule__OpCompare__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_2__0() throws RecognitionException;
+     void rule__OpOther__Group_2__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_2__1() throws RecognitionException;
+     void rule__OpOther__Group_2__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5__0() throws RecognitionException;
+     void rule__OpOther__Group_5__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5__1() throws RecognitionException;
+     void rule__OpOther__Group_5__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0__0() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6__0() throws RecognitionException;
+     void rule__OpOther__Group_6__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6__1() throws RecognitionException;
+     void rule__OpOther__Group_6__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0__0() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__0() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__1() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__2() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group__0() throws RecognitionException;
+     void rule__XCastedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group__1() throws RecognitionException;
+     void rule__XCastedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__1() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group__1() throws RecognitionException;
+     void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__0() throws RecognitionException;
+     void rule__XSetLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__1() throws RecognitionException;
+     void rule__XSetLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__2() throws RecognitionException;
+     void rule__XSetLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__3() throws RecognitionException;
+     void rule__XSetLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__4() throws RecognitionException;
+     void rule__XSetLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__0() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__1() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__0() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__1() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__0() throws RecognitionException;
+     void rule__XListLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__1() throws RecognitionException;
+     void rule__XListLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__2() throws RecognitionException;
+     void rule__XListLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__3() throws RecognitionException;
+     void rule__XListLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__4() throws RecognitionException;
+     void rule__XListLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3__0() throws RecognitionException;
+     void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3__1() throws RecognitionException;
+     void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__0() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__1() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group__0() throws RecognitionException;
+     void rule__XClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group__1() throws RecognitionException;
+     void rule__XClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group__2() throws RecognitionException;
+     void rule__XClosure__Group__2__Impl() throws RecognitionException;
+     void rule__XClosure__Group__3() throws RecognitionException;
+     void rule__XClosure__Group__3__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0__0() throws RecognitionException;
+     void rule__XClosure__Group_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0_0__0() throws RecognitionException;
+     void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0_0__1() throws RecognitionException;
+     void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1__0() throws RecognitionException;
+     void rule__XClosure__Group_1__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__0() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__1() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__0() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__1() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group__0() throws RecognitionException;
+     void rule__XShortClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group__1() throws RecognitionException;
+     void rule__XShortClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__2() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__0() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__1() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__2() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__0() throws RecognitionException;
+     void rule__XIfExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__1() throws RecognitionException;
+     void rule__XIfExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__2() throws RecognitionException;
+     void rule__XIfExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__3() throws RecognitionException;
+     void rule__XIfExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__4() throws RecognitionException;
+     void rule__XIfExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__5() throws RecognitionException;
+     void rule__XIfExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__6() throws RecognitionException;
+     void rule__XIfExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group_6__0() throws RecognitionException;
+     void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group_6__1() throws RecognitionException;
+     void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__3() throws RecognitionException;
+     void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__4() throws RecognitionException;
+     void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__5() throws RecognitionException;
+     void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__6() throws RecognitionException;
+     void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__0() throws RecognitionException;
+     void rule__XCasePart__Group__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__1() throws RecognitionException;
+     void rule__XCasePart__Group__1__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__2() throws RecognitionException;
+     void rule__XCasePart__Group__2__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__3() throws RecognitionException;
+     void rule__XCasePart__Group__3__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_2__0() throws RecognitionException;
+     void rule__XCasePart__Group_2__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_2__1() throws RecognitionException;
+     void rule__XCasePart__Group_2__1__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__0() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__1() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__1() throws RecognitionException;
+     void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__2() throws RecognitionException;
+     void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__3() throws RecognitionException;
+     void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__2() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__3() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__4() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__5() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__6() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__7() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__8() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__9() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__0() throws RecognitionException;
+     void rule__XWhileExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__1() throws RecognitionException;
+     void rule__XWhileExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__2() throws RecognitionException;
+     void rule__XWhileExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__3() throws RecognitionException;
+     void rule__XWhileExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__4() throws RecognitionException;
+     void rule__XWhileExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__5() throws RecognitionException;
+     void rule__XWhileExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__0() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__1() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__2() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__3() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__4() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__5() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__6() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__0() throws RecognitionException;
+     void rule__XBlockExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__1() throws RecognitionException;
+     void rule__XBlockExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__2() throws RecognitionException;
+     void rule__XBlockExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__3() throws RecognitionException;
+     void rule__XBlockExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__0() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__1() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__2() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__3() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__0() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__1() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__0() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__1() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__0() throws RecognitionException;
+     void rule__XFeatureCall__Group__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__1() throws RecognitionException;
+     void rule__XFeatureCall__Group__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__2() throws RecognitionException;
+     void rule__XFeatureCall__Group__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__3() throws RecognitionException;
+     void rule__XFeatureCall__Group__3__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__4() throws RecognitionException;
+     void rule__XFeatureCall__Group__4__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__2() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__3() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__2() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__0() throws RecognitionException;
+     void rule__XConstructorCall__Group__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__1() throws RecognitionException;
+     void rule__XConstructorCall__Group__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__2() throws RecognitionException;
+     void rule__XConstructorCall__Group__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__3() throws RecognitionException;
+     void rule__XConstructorCall__Group__3__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__4() throws RecognitionException;
+     void rule__XConstructorCall__Group__4__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__5() throws RecognitionException;
+     void rule__XConstructorCall__Group__5__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__2() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__3() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__2() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__0() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__1() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XNullLiteral__Group__0() throws RecognitionException;
+     void rule__XNullLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XNullLiteral__Group__1() throws RecognitionException;
+     void rule__XNullLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XNumberLiteral__Group__0() throws RecognitionException;
+     void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XNumberLiteral__Group__1() throws RecognitionException;
+     void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XStringLiteral__Group__0() throws RecognitionException;
+     void rule__XStringLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XStringLiteral__Group__1() throws RecognitionException;
+     void rule__XStringLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__0() throws RecognitionException;
+     void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__1() throws RecognitionException;
+     void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__2() throws RecognitionException;
+     void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__3() throws RecognitionException;
+     void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__4() throws RecognitionException;
+     void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__5() throws RecognitionException;
+     void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__0() throws RecognitionException;
+     void rule__XThrowExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__1() throws RecognitionException;
+     void rule__XThrowExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__2() throws RecognitionException;
+     void rule__XThrowExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__0() throws RecognitionException;
+     void rule__XReturnExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__1() throws RecognitionException;
+     void rule__XReturnExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__2() throws RecognitionException;
+     void rule__XReturnExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__1() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__2() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__3() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__0() throws RecognitionException;
+     void rule__XCatchClause__Group__0__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__1() throws RecognitionException;
+     void rule__XCatchClause__Group__1__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__2() throws RecognitionException;
+     void rule__XCatchClause__Group__2__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__3() throws RecognitionException;
+     void rule__XCatchClause__Group__3__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__4() throws RecognitionException;
+     void rule__XCatchClause__Group__4__Impl() throws RecognitionException;
+     void rule__Number__Group_1__0() throws RecognitionException;
+     void rule__Number__Group_1__0__Impl() throws RecognitionException;
+     void rule__Number__Group_1__1() throws RecognitionException;
+     void rule__Number__Group_1__1__Impl() throws RecognitionException;
+     void rule__Number__Group_1_1__0() throws RecognitionException;
+     void rule__Number__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__Number__Group_1_1__1() throws RecognitionException;
+     void rule__Number__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__1() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException;
+     void rule__ArrayBrackets__Group__0() throws RecognitionException;
+     void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException;
+     void rule__ArrayBrackets__Group__1() throws RecognitionException;
+     void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__2() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__JvmUpperBound__Group__0() throws RecognitionException;
+     void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException;
+     void rule__JvmUpperBound__Group__1() throws RecognitionException;
+     void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException;
+     void rule__JvmLowerBound__Group__0() throws RecognitionException;
+     void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException;
+     void rule__JvmLowerBound__Group__1() throws RecognitionException;
+     void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__0() throws RecognitionException;
+     void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__1() throws RecognitionException;
+     void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__2() throws RecognitionException;
+     void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__0() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__1() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__2() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__3() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__3__Impl() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException;
+     void rule__StatemachineState__UnorderedGroup_3() throws RecognitionException;
+     void rule__StatemachineState__UnorderedGroup_3__Impl() throws RecognitionException;
+     void rule__StatemachineState__UnorderedGroup_3__0() throws RecognitionException;
+     void rule__StatemachineState__UnorderedGroup_3__1() throws RecognitionException;
+     void rule__StatemachineState__UnorderedGroup_3__2() throws RecognitionException;
+     void rule__StatemachineControlField__UnorderedGroup_3() throws RecognitionException;
+     void rule__StatemachineControlField__UnorderedGroup_3__Impl() throws RecognitionException;
+     void rule__StatemachineControlField__UnorderedGroup_3__0() throws RecognitionException;
+     void rule__StatemachineControlField__UnorderedGroup_3__1() throws RecognitionException;
+     void rule__StatemachineModel__PackagesAssignment() throws RecognitionException;
+     void rule__StatemachinePackage__NameAssignment_2() throws RecognitionException;
+     void rule__StatemachinePackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__StatemachinePackage__StatemachinesAssignment_3_2() throws RecognitionException;
+     void rule__Statemachine__NameAssignment_1() throws RecognitionException;
+     void rule__Statemachine__DescriptionAssignment_2_0() throws RecognitionException;
+     void rule__Statemachine__DescriptionValueAssignment_2_1() throws RecognitionException;
+     void rule__Statemachine__FunctionGroupAssignment_3_1() throws RecognitionException;
+     void rule__Statemachine__InitialStateAssignment_5() throws RecognitionException;
+     void rule__Statemachine__InitialEventAssignment_7() throws RecognitionException;
+     void rule__Statemachine__EventsAssignment_8_1_1() throws RecognitionException;
+     void rule__Statemachine__ControlsAssignment_9_2() throws RecognitionException;
+     void rule__Statemachine__StatesAssignment_10_2() throws RecognitionException;
+     void rule__StatemachineEvent__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineState__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineState__TriggersAssignment_3_0_2() throws RecognitionException;
+     void rule__StatemachineState__IdentityAssignment_3_1_1() throws RecognitionException;
+     void rule__StatemachineState__KeystrokeAssignment_3_2_2() throws RecognitionException;
+     void rule__StatemachineState__HasKeyOperationAssignment_3_2_3_0() throws RecognitionException;
+     void rule__StatemachineState__KeyOperationAssignment_3_2_3_1() throws RecognitionException;
+     void rule__StatemachineTrigger__TriggersAssignment_2() throws RecognitionException;
+     void rule__StatemachineTrigger__GuardsAssignment_3_2() throws RecognitionException;
+     void rule__StatemachineTrigger__HasTransitionAssignment_5_0() throws RecognitionException;
+     void rule__StatemachineTrigger__TransitionAssignment_5_1() throws RecognitionException;
+     void rule__StatemachineTrigger__ActionsAssignment_7() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__BlinkRateAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralBlinkRate__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralClear__DeviceAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__ViewportRowAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__ViewportColumnAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__ViewportHeightAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__ViewportWidthAssignment_8() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__WindowHeightAssignment_10() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__WindowWidthAssignment_12() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCreateWindow__DeviceAssignment_14() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__CursorTypeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralCursorType__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDestroyWindow__DeviceAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__BrightnessAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDeviceBrightness__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__BitmapIdAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayBitmap__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__TextAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__HasTypeAssignment_3_0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__TextTypeAssignment_3_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayText__DeviceAssignment_5() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__TextAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__RowAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__ColumnAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__HasTypeAssignment_7_0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__TextTypeAssignment_7_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralDisplayTextAt__DeviceAssignment_9() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__WaitAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralInterCharacterWait__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__FormatAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeFormat__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__WaitAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeRepeatWait__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__MarqueeTypeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeType__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__WaitAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralMarqueeUnitWait__DeviceAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__DirectionAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__UnitsAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralScroll__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralOpenDrawer__DeviceAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__DataAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__BarcodeTypeAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBarcode__DeviceAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__BitmapIdAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintBitmap__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__TextAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintCut__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__TextAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintNormal__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__BitmapIdAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__NameAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintRegisterBitmap__DeviceAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__HostAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__PortAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTOpen__DeviceAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTClose__DeviceAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAcknowledge__DeviceAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__PasswordAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__ReceiptAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTReversal__DeviceAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__PasswordAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__ConfigurationAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTRegistration__DeviceAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__AmountAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTAuthorization__DeviceAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPTResponse__DeviceAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__ReportAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__HasFilterAssignment_2_0() throws RecognitionException;
+     void rule__StatemachineActionPeripheralPrintReport__KeyAssignment_2_1() throws RecognitionException;
+     void rule__StatemachineOperation__OperationAssignment_1() throws RecognitionException;
+     void rule__StatemachineOperation__FirstAssignment_3() throws RecognitionException;
+     void rule__StatemachineOperation__MoreAssignment_4() throws RecognitionException;
+     void rule__StatemachineGuard__GuardAssignment_1() throws RecognitionException;
+     void rule__StatemachineGuard__HasOnFailAssignment_2_0() throws RecognitionException;
+     void rule__StatemachineGuard__OnFailCaptionAssignment_2_2() throws RecognitionException;
+     void rule__StatemachineGuard__OnFailDescriptionAssignment_2_4() throws RecognitionException;
+     void rule__StatemachineGuard__OnFailTypeAssignment_2_6() throws RecognitionException;
+     void rule__StatemachineFunction__FunctionAssignment_1() throws RecognitionException;
+     void rule__StatemachineFunction__FirstAssignment_3() throws RecognitionException;
+     void rule__StatemachineFunction__MoreAssignment_4() throws RecognitionException;
+     void rule__StatemachineStorage__ContentAssignment_1() throws RecognitionException;
+     void rule__StatemachineStorage__KeyAssignment_3() throws RecognitionException;
+     void rule__StatemachineStorage__AttributeAssignment_5() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__KeyAssignment_2() throws RecognitionException;
+     void rule__StatemachineStorageRetrieve__AttributeAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__TransitionAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__GuardAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionConditionalTransition__ActionsAssignment_4() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceString__TextAssignment() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumber__ValueAssignment() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluate__EvaluationtypeAssignment() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslate__TextAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__DtoAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttribute__AttributeAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceStringMore__TextAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceNumberMore__ValueAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceEvaluateMore__EvaluationtypeAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceTranslateMore__TextAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionFieldGetMore__AttributeAssignment_3() throws RecognitionException;
+     void rule__StatemachineOperationMore__OperationAssignment_3() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__KeyAssignment_4() throws RecognitionException;
+     void rule__StatemachineStorageRetrieveMore__AttributeAssignment_6() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__DtoAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionFieldSourceDtoAttributeMore__AttributeAssignment_5() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__FirstAssignment_0() throws RecognitionException;
+     void rule__StatemachineActionFieldConcatenation__MoreAssignment_1() throws RecognitionException;
+     void rule__StatemachineOperationParameter__SourceAssignment() throws RecognitionException;
+     void rule__StatemachineOperationParameterMore__SourceAssignment_2() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__SourceAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionFieldSet__AttributeAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionFieldClear__AttributeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionFieldGet__AttributeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionFieldRemove__AttributeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionItemVisible__AttributeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionItemInvisible__AttributeAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__CaptionAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionButtonCaption__AttributeAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__ImageAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionButtonImage__AttributeAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__SearchAssignment_1() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__DtoAssignment_3() throws RecognitionException;
+     void rule__StatemachineActionDTOFind__AttributeAssignment_5() throws RecognitionException;
+     void rule__StatemachineActionScheduler__SchedulerAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlButton__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlButton__EventTypeAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlButton__ButtonsAssignment_5() throws RecognitionException;
+     void rule__StatemachineControlField__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlField__FieldsAssignment_3_0() throws RecognitionException;
+     void rule__StatemachineControlField__LayoutsAssignment_3_1() throws RecognitionException;
+     void rule__StatemachineControlDTO__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlDTO__DtosAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlScheduler__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlScheduler__SchedulersAssignment_3() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceLineDisplay__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePOSPrinter__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachinePeripheralDeviceCashDrawer__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachinePeripheralDevicePT__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__LineDisplaysAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__PosPrintersAssignment_4() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__CashDrawersAssignment_5() throws RecognitionException;
+     void rule__StatemachineControlPeripheral__PaymentTerminalsAssignment_6() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__HasImageAssignment_2_0() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__ImageAssignment_2_1() throws RecognitionException;
+     void rule__StatemachineControlButtonAttribute__EventAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventKeyboard__KeystrokeAssignment_2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventIdentity__IdentityAssignment_2() throws RecognitionException;
+     void rule__StatemachineControlButtonAttributeEventEvent__EventAssignment_2() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlFieldAttribute__AttributeTypeAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlFieldLayout__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__AttributeTypeAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__HasEventAssignment_4_0() throws RecognitionException;
+     void rule__StatemachineControlDTOAttribute__EventAssignment_4_1() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__NameAssignment_1() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__DelayAssignment_3() throws RecognitionException;
+     void rule__StatemachineControlSchedulerAttribute__EventAssignment_5() throws RecognitionException;
+     void rule__StatemachineDTOType__AttributeTypeAssignment() throws RecognitionException;
+     void rule__StatemachineFieldType__AttributeTypeAssignment() throws RecognitionException;
+     void rule__StatemachineImport__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException;
+     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException;
+     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException;
+     void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException;
+     void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException;
+     void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException;
+     void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
+     void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException;
+     void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException;
+     void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
+     void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException;
+     void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException;
+     void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException;
+     void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException;
+     void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException;
+     void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
+     void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException;
+     void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
+     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException;
+     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException;
+     void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException;
+     void rule__XClosure__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException;
+     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException;
+     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException;
+     void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException;
+     void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException;
+     void rule__XIfExpression__IfAssignment_3() throws RecognitionException;
+     void rule__XIfExpression__ThenAssignment_5() throws RecognitionException;
+     void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException;
+     void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException;
+     void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException;
+     void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException;
+     void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException;
+     void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException;
+     void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException;
+     void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException;
+     void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException;
+     void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException;
+     void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException;
+     void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException;
+     void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException;
+     void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException;
+     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException;
+     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException;
+     void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException;
+     void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException;
+     void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException;
+     void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException;
+     void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException;
+     void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException;
+     void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException;
+     void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException;
+     void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException;
+     void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException;
+     void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
+     void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException;
+     void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
+     void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException;
+     void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException;
+     void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException;
+     void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException;
+     void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException;
+     void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException;
+     void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException;
+     void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException;
+     void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException;
+     void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException;
+     void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException;
+     void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException;
+     void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException;
+     void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException;
+     void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException;
+     void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException;
+     void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException;
+     void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException;
+     void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException;
+     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException;
+     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException;
+     void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__XImportDeclaration__StaticAssignment_1_0_0() throws RecognitionException;
+     void rule__XImportDeclaration__ExtensionAssignment_1_0_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedTypeAssignment_1_0_2() throws RecognitionException;
+     void rule__XImportDeclaration__WildcardAssignment_1_0_3_0() throws RecognitionException;
+     void rule__XImportDeclaration__MemberNameAssignment_1_0_3_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedTypeAssignment_1_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedNamespaceAssignment_1_2() throws RecognitionException;
+     void synpred64_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred65_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred66_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred91_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred92_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred105_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred113_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred114_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred127_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred131_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred132_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred138_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred264_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred276_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred278_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred279_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred280_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred281_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred282_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred283_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred284_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred285_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred286_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred287_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred289_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred290_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred298_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred305_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred308_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred321_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred322_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred326_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred327_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred328_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred333_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred334_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred335_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred337_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred341_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred343_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred344_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred351_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred352_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred353_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred354_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred355_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred356_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred357_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred358_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred359_InternalStatemachineDSL_fragment() throws RecognitionException;   
+     void synpred360_InternalStatemachineDSL_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalStatemachineDSLParser1 extends AbstractInternalContentAssistParser implements InternalStatemachineDSLParserSignatures {
+
+        InternalStatemachineDSLParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalStatemachineDSLParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'Boolean'", "'Integer'", "'Long'", "'Double'", "'String'", "'Date'", "'SuggestText'", "'keyboard'", "'trigger'", "'identity'", "'getIPAddress'", "'getNow'", "'getUserAgentInfo'", "'isTouchDevice'", "'isHttps'", "'getBrowserLocale'", "'getUserName'", "'getUserPassword'", "'getUserEmail'", "'getUserPosition'", "'getUserPrintService'", "'getSceenWidth'", "'getScreenHeight'", "'getTrigger'", "'humanized'", "'warning'", "'error'", "'tray'", "'assistive'", "'none'", "'fixed'", "'block'", "'halfblock'", "'underline'", "'reverse'", "'other'", "'blink'", "'up'", "'down'", "'left'", "'right'", "'init'", "'walk'", "'place'", "'normal'", "'blinkreverse'", "'upca'", "'upcb'", "'jan8'", "'ean8'", "'jan13'", "'ean13'", "'tf'", "'itf'", "'codeabar'", "'code39'", "'code93'", "'code128'", "'upca_s'", "'upce_s'", "'upcd1'", "'upcd2'", "'upcd3'", "'upcd4'", "'upcd5'", "'ean8_s'", "'ean13_s'", "'ean128'", "'orca'", "'ocrb'", "'code128_parsed'", "'gs1databar'", "'gs1databar_e'", "'gs1databar_s'", "'gs1databar_e_s'", "'pdf417'", "'maxicode'", "'datamatrix'", "'qrcode'", "'uqrcode'", "'aztec'", "'updf417'", "'package'", "'{'", "'}'", "'statemachine'", "'initialState'", "'initialEvent'", "'functiongroup'", "'events'", "'controls'", "'states'", "'event'", "'state'", "'triggers'", "'keystroke'", "'@'", "'actions'", "'guards'", "'blinkRate'", "'clearDevice'", "'createWindow'", "'row'", "'column'", "'height'", "'width'", "'windowHeight'", "'windowWidth'", "'cursorType'", "'destroyWindow'", "'deviceBrightness'", "'displayBitmap'", "'id'", "'displayText'", "'text'", "'displayTextAt'", "'interCharacterWait'", "'marqueeFormat'", "'marqueeRepeatWait'", "'marqueeType'", "'marqueeUnitWait'", "'scroll'", "'openDrawer'", "'printBarcode'", "'data'", "'barcodeType'", "'printBitmap'", "'printCut'", "'printNormal'", "'registerBitmap'", "'name'", "'paymentOpen'", "'host'", "'port'", "'paymentClose'", "'paymentAcknowledge'", "'paymentReversal'", "'withPassword'", "'ofReceipt'", "'paymentRegistration'", "'configuration'", "'paymentAuthorization'", "'ofAmount'", "'paymentResponse'", "'from'", "'printReport'", "'operation'", "'('", "')'", "'guard'", "'caption'", "'description'", "'type'", "'function'", "'store'", "'with'", "'retrieve'", "'transition'", "'translate'", "'dto'", "'get'", "','", "'set'", "'clear'", "'remove'", "'visible'", "'invisible'", "'image'", "'search'", "'in'", "'schedule'", "'keypad'", "'fields'", "'dataProvider'", "'scheduler'", "'lineDisplay'", "'posPrinter'", "'cashDrawer'", "'payment'", "'peripheral'", "'button'", "'key'", "'field'", "'layout'", "'delay'", "'send'", "']'", "'#'", "'['", "'instanceof'", "'as'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'described by'", "'and'", "'onFail'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__265=265;
+    public static final int T__143=143;
+    public static final int T__264=264;
+    public static final int T__146=146;
+    public static final int T__267=267;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__266=266;
+    public static final int T__140=140;
+    public static final int T__261=261;
+    public static final int T__260=260;
+    public static final int T__142=142;
+    public static final int T__263=263;
+    public static final int T__141=141;
+    public static final int T__262=262;
+    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__258=258;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__257=257;
+    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__259=259;
+    public static final int T__133=133;
+    public static final int T__254=254;
+    public static final int T__132=132;
+    public static final int T__253=253;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__256=256;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int T__255=255;
+    public static final int T__250=250;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__252=252;
+    public static final int T__130=130;
+    public static final int T__251=251;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    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__247=247;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__246=246;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__249=249;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__248=248;
+    public static final int T__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    public static final int T__270=270;
+    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__269=269;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__268=268;
+    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__100=100;
+    public static final int T__221=221;
+    public static final int T__220=220;
+    public static final int T__102=102;
+    public static final int T__223=223;
+    public static final int T__101=101;
+    public static final int T__222=222;
+    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__218=218;
+    public static final int T__217=217;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__219=219;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__216=216;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__243=243;
+    public static final int T__121=121;
+    public static final int T__242=242;
+    public static final int T__124=124;
+    public static final int T__245=245;
+    public static final int T__123=123;
+    public static final int T__244=244;
+    public static final int T__120=120;
+    public static final int T__241=241;
+    public static final int T__240=240;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__239=239;
+    public static final int T__115=115;
+    public static final int T__236=236;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__235=235;
+    public static final int T__117=117;
+    public static final int T__238=238;
+    public static final int T__116=116;
+    public static final int T__237=237;
+    public static final int T__111=111;
+    public static final int T__232=232;
+    public static final int T__110=110;
+    public static final int T__231=231;
+    public static final int T__113=113;
+    public static final int T__234=234;
+    public static final int T__112=112;
+    public static final int T__233=233;
+    public static final int T__230=230;
+    public static final int T__108=108;
+    public static final int T__229=229;
+    public static final int T__107=107;
+    public static final int T__228=228;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__225=225;
+    public static final int T__103=103;
+    public static final int T__224=224;
+    public static final int T__106=106;
+    public static final int T__227=227;
+    public static final int T__105=105;
+    public static final int T__226=226;
+    public static final int RULE_HEX=6;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+
+    public String[] getTokenNames() { return InternalStatemachineDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/antlr/internal/InternalStatemachineDSL.g"; }
+
+
+     
+     	protected StatemachineDSLGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(StatemachineDSLGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred298_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred298_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred308_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred308_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred337_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred91_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred91_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred284_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred284_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred343_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred343_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred328_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred278_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred278_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred281_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred281_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred65_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred65_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred352_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred352_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred305_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred305_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred132_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred132_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred357_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred357_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred290_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred290_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred289_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred289_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred334_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred334_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred341_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred341_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred114_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred114_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred127_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred127_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred326_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred326_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred354_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred354_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred264_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred264_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred359_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred359_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred282_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred282_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred287_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred287_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred351_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred351_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred131_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred131_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred279_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred279_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred356_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred356_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred333_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred333_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred113_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred113_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred321_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred321_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred344_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred344_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred285_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred285_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred280_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred280_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred66_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred66_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred353_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred353_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred322_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred322_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred358_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred358_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred283_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred283_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred286_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred286_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred276_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred276_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred335_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred138_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred138_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred92_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred92_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred105_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred105_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred327_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred355_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred355_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred360_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred360_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred64_InternalStatemachineDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred64_InternalStatemachineDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA5 dfa5 = new DFA5(this);
+    protected DFA8 dfa8 = new DFA8(this);
+    protected DFA9 dfa9 = new DFA9(this);
+    protected DFA10 dfa10 = new DFA10(this);
+    protected DFA17 dfa17 = new DFA17(this);
+    protected DFA25 dfa25 = new DFA25(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA37 dfa37 = new DFA37(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA49 dfa49 = new DFA49(this);
+    protected DFA108 dfa108 = new DFA108(this);
+    protected DFA114 dfa114 = new DFA114(this);
+    protected DFA121 dfa121 = new DFA121(this);
+    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA130 dfa130 = new DFA130(this);
+    protected DFA140 dfa140 = new DFA140(this);
+    protected DFA153 dfa153 = new DFA153(this);
+    protected DFA154 dfa154 = new DFA154(this);
+    protected DFA158 dfa158 = new DFA158(this);
+    protected DFA159 dfa159 = new DFA159(this);
+    protected DFA160 dfa160 = new DFA160(this);
+    protected DFA165 dfa165 = new DFA165(this);
+    protected DFA173 dfa173 = new DFA173(this);
+    protected DFA176 dfa176 = new DFA176(this);
+    protected DFA188 dfa188 = new DFA188(this);
+    static final String DFA5_eotS =
+        "\12\uffff";
+    static final String DFA5_eofS =
+        "\12\uffff";
+    static final String DFA5_minS =
+        "\1\42\1\5\10\uffff";
+    static final String DFA5_maxS =
+        "\1\42\1\u00d3\10\uffff";
+    static final String DFA5_acceptS =
+        "\2\uffff\1\5\1\1\1\10\1\7\1\2\1\3\1\4\1\6";
+    static final String DFA5_specialS =
+        "\12\uffff}>";
+    static final String[] DFA5_transitionS = {
+            "\1\1",
+            "\1\3\1\uffff\1\6\33\uffff\1\6\31\uffff\16\7\172\uffff\1\11"+
+            "\11\uffff\1\5\1\uffff\1\10\1\4\1\2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS);
+    static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS);
+    static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS);
+    static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS);
+    static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS);
+    static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS);
+    static final short[][] DFA5_transition;
+
+    static {
+        int numStates = DFA5_transitionS.length;
+        DFA5_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA5_transition[i] = DFA.unpackEncodedString(DFA5_transitionS[i]);
+        }
+    }
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = DFA5_eot;
+            this.eof = DFA5_eof;
+            this.min = DFA5_min;
+            this.max = DFA5_max;
+            this.accept = DFA5_accept;
+            this.special = DFA5_special;
+            this.transition = DFA5_transition;
+        }
+        public String getDescription() {
+            return "5584:1: rule__StatemachineActionFieldSourceMore__Alternatives : ( ( ruleStatemachineActionFieldSourceStringMore ) | ( ruleStatemachineActionFieldSourceNumberMore ) | ( ruleStatemachineActionFieldSourceEvaluateMore ) | ( ruleStatemachineActionFieldSourceTranslateMore ) | ( ruleStatemachineActionFieldGetMore ) | ( ruleStatemachineOperationMore ) | ( ruleStatemachineStorageRetrieveMore ) | ( ruleStatemachineActionFieldSourceDtoAttributeMore ) );";
+        }
+    }
+    static final String DFA8_eotS =
+        "\43\uffff";
+    static final String DFA8_eofS =
+        "\43\uffff";
+    static final String DFA8_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA8_maxS =
+        "\1\u010e\1\0\41\uffff";
+    static final String DFA8_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA8_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA8_transitionS = {
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\123"+
+            "\uffff\1\2\14\uffff\1\2\62\uffff\1\2\47\uffff\2\2\3\uffff\1"+
+            "\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA8_eot = DFA.unpackEncodedString(DFA8_eotS);
+    static final short[] DFA8_eof = DFA.unpackEncodedString(DFA8_eofS);
+    static final char[] DFA8_min = DFA.unpackEncodedStringToUnsignedChars(DFA8_minS);
+    static final char[] DFA8_max = DFA.unpackEncodedStringToUnsignedChars(DFA8_maxS);
+    static final short[] DFA8_accept = DFA.unpackEncodedString(DFA8_acceptS);
+    static final short[] DFA8_special = DFA.unpackEncodedString(DFA8_specialS);
+    static final short[][] DFA8_transition;
+
+    static {
+        int numStates = DFA8_transitionS.length;
+        DFA8_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA8_transition[i] = DFA.unpackEncodedString(DFA8_transitionS[i]);
+        }
+    }
+
+    class DFA8 extends DFA {
+
+        public DFA8(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 8;
+            this.eot = DFA8_eot;
+            this.eof = DFA8_eof;
+            this.min = DFA8_min;
+            this.max = DFA8_max;
+            this.accept = DFA8_accept;
+            this.special = DFA8_special;
+            this.transition = DFA8_transition;
+        }
+        public String getDescription() {
+            return "5711:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA8_1 = input.LA(1);
+
+                         
+                        int index8_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred64_InternalStatemachineDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index8_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 8, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA9_eotS =
+        "\43\uffff";
+    static final String DFA9_eofS =
+        "\43\uffff";
+    static final String DFA9_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA9_maxS =
+        "\1\u010e\1\0\41\uffff";
+    static final String DFA9_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA9_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA9_transitionS = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\123\uffff"+
+            "\1\2\14\uffff\1\2\62\uffff\1\2\47\uffff\1\1\1\2\3\uffff\1\2"+
+            "\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
+    static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
+    static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
+    static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
+    static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
+    static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
+    static final short[][] DFA9_transition;
+
+    static {
+        int numStates = DFA9_transitionS.length;
+        DFA9_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA9_transition[i] = DFA.unpackEncodedString(DFA9_transitionS[i]);
+        }
+    }
+
+    class DFA9 extends DFA {
+
+        public DFA9(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 9;
+            this.eot = DFA9_eot;
+            this.eof = DFA9_eof;
+            this.min = DFA9_min;
+            this.max = DFA9_max;
+            this.accept = DFA9_accept;
+            this.special = DFA9_special;
+            this.transition = DFA9_transition;
+        }
+        public String getDescription() {
+            return "5733:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA9_1 = input.LA(1);
+
+                         
+                        int index9_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred65_InternalStatemachineDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index9_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 9, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA10_eotS =
+        "\43\uffff";
+    static final String DFA10_eofS =
+        "\43\uffff";
+    static final String DFA10_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA10_maxS =
+        "\1\u010e\1\0\41\uffff";
+    static final String DFA10_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA10_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA10_transitionS = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\123\uffff"+
+            "\1\2\14\uffff\1\2\62\uffff\1\2\47\uffff\1\1\1\2\3\uffff\1\2"+
+            "\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
+    static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
+    static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
+    static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
+    static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
+    static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
+    static final short[][] DFA10_transition;
+
+    static {
+        int numStates = DFA10_transitionS.length;
+        DFA10_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
+        }
+    }
+
+    class DFA10 extends DFA {
+
+        public DFA10(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 10;
+            this.eot = DFA10_eot;
+            this.eof = DFA10_eof;
+            this.min = DFA10_min;
+            this.max = DFA10_max;
+            this.accept = DFA10_accept;
+            this.special = DFA10_special;
+            this.transition = DFA10_transition;
+        }
+        public String getDescription() {
+            return "5755:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA10_1 = input.LA(1);
+
+                         
+                        int index10_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred66_InternalStatemachineDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index10_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 10, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA17_eotS =
+        "\13\uffff";
+    static final String DFA17_eofS =
+        "\13\uffff";
+    static final String DFA17_minS =
+        "\1\32\2\uffff\1\32\7\uffff";
+    static final String DFA17_maxS =
+        "\1\41\2\uffff\1\36\7\uffff";
+    static final String DFA17_acceptS =
+        "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
+    static final String DFA17_specialS =
+        "\13\uffff}>";
+    static final String[] DFA17_transitionS = {
+            "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\11\3\uffff\1\12",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
+    static final short[] DFA17_eof = DFA.unpackEncodedString(DFA17_eofS);
+    static final char[] DFA17_min = DFA.unpackEncodedStringToUnsignedChars(DFA17_minS);
+    static final char[] DFA17_max = DFA.unpackEncodedStringToUnsignedChars(DFA17_maxS);
+    static final short[] DFA17_accept = DFA.unpackEncodedString(DFA17_acceptS);
+    static final short[] DFA17_special = DFA.unpackEncodedString(DFA17_specialS);
+    static final short[][] DFA17_transition;
+
+    static {
+        int numStates = DFA17_transitionS.length;
+        DFA17_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA17_transition[i] = DFA.unpackEncodedString(DFA17_transitionS[i]);
+        }
+    }
+
+    class DFA17 extends DFA {
+
+        public DFA17(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 17;
+            this.eot = DFA17_eot;
+            this.eof = DFA17_eof;
+            this.min = DFA17_min;
+            this.max = DFA17_max;
+            this.accept = DFA17_accept;
+            this.special = DFA17_special;
+            this.transition = DFA17_transition;
+        }
+        public String getDescription() {
+            return "5987:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA25_eotS =
+        "\12\uffff";
+    static final String DFA25_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA25_minS =
+        "\1\53\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA25_maxS =
+        "\1\u010b\2\61\1\uffff\5\u010e\1\uffff";
+    static final String DFA25_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA25_specialS =
+        "\12\uffff}>";
+    static final String[] DFA25_transitionS = {
+            "\1\1\u00de\uffff\1\2\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\45\3\123\uffff\2\3\76\uffff\2\3\14\uffff"+
+            "\1\3\30\uffff\30\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\123\uffff\2\3\76\uffff\2\3\14\uffff"+
+            "\1\3\30\uffff\30\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\123\uffff\2\3\76\uffff\2\3\14\uffff"+
+            "\1\3\30\uffff\30\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\123\uffff\2\3\76\uffff\2\3\14\uffff"+
+            "\1\3\30\uffff\30\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\123\uffff\2\3\76\uffff\2\3\14\uffff"+
+            "\1\3\30\uffff\30\3\5\uffff\2\3\1\uffff\2\3",
+            ""
+    };
+
+    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
+    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
+    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
+    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
+    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
+    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
+    static final short[][] DFA25_transition;
+
+    static {
+        int numStates = DFA25_transitionS.length;
+        DFA25_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
+        }
+    }
+
+    class DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            this.eot = DFA25_eot;
+            this.eof = DFA25_eof;
+            this.min = DFA25_min;
+            this.max = DFA25_max;
+            this.accept = DFA25_accept;
+            this.special = DFA25_special;
+            this.transition = DFA25_transition;
+        }
+        public String getDescription() {
+            return "6269:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA28_eotS =
+        "\43\uffff";
+    static final String DFA28_eofS =
+        "\43\uffff";
+    static final String DFA28_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA28_maxS =
+        "\1\u010e\2\0\40\uffff";
+    static final String DFA28_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA28_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\123\uffff\1\5\77\uffff\1\2\47\uffff\2\5\3\uffff\1"+
+            "\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff"+
+            "\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
+    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
+    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
+    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
+    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
+    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
+    static final short[][] DFA28_transition;
+
+    static {
+        int numStates = DFA28_transitionS.length;
+        DFA28_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
+        }
+    }
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = DFA28_eot;
+            this.eof = DFA28_eof;
+            this.min = DFA28_min;
+            this.max = DFA28_max;
+            this.accept = DFA28_accept;
+            this.special = DFA28_special;
+            this.transition = DFA28_transition;
+        }
+        public String getDescription() {
+            return "6345:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA28_1 = input.LA(1);
+
+                         
+                        int index28_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred105_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index28_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA28_2 = input.LA(1);
+
+                         
+                        int index28_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred105_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index28_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 28, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA29_eotS =
+        "\40\uffff";
+    static final String DFA29_eofS =
+        "\40\uffff";
+    static final String DFA29_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA29_maxS =
+        "\1\u010e\26\uffff\1\0\10\uffff";
+    static final String DFA29_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1"+
+        "\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String DFA29_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA29_transitionS = {
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\123\uffff\1\2\77\uffff"+
+            "\1\35\47\uffff\2\14\3\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1"+
+            "\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
+    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
+    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
+    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
+    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
+    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
+    static final short[][] DFA29_transition;
+
+    static {
+        int numStates = DFA29_transitionS.length;
+        DFA29_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
+        }
+    }
+
+    class DFA29 extends DFA {
+
+        public DFA29(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 29;
+            this.eot = DFA29_eot;
+            this.eof = DFA29_eof;
+            this.min = DFA29_min;
+            this.max = DFA29_max;
+            this.accept = DFA29_accept;
+            this.special = DFA29_special;
+            this.transition = DFA29_transition;
+        }
+        public String getDescription() {
+            return "6367:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA29_23 = input.LA(1);
+
+                         
+                        int index29_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred113_InternalStatemachineDSL()) ) {s = 30;}
+
+                        else if ( (synpred114_InternalStatemachineDSL()) ) {s = 31;}
+
+                         
+                        input.seek(index29_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 29, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA32_eotS =
+        "\43\uffff";
+    static final String DFA32_eofS =
+        "\43\uffff";
+    static final String DFA32_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA32_maxS =
+        "\1\u010e\1\0\41\uffff";
+    static final String DFA32_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA32_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA32_transitionS = {
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff"+
+            "\6\2\123\uffff\1\2\77\uffff\1\1\47\uffff\2\2\3\uffff\1\2\1\uffff"+
+            "\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
+    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
+    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
+    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
+    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
+    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
+    static final short[][] DFA32_transition;
+
+    static {
+        int numStates = DFA32_transitionS.length;
+        DFA32_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
+        }
+    }
+
+    class DFA32 extends DFA {
+
+        public DFA32(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 32;
+            this.eot = DFA32_eot;
+            this.eof = DFA32_eof;
+            this.min = DFA32_min;
+            this.max = DFA32_max;
+            this.accept = DFA32_accept;
+            this.special = DFA32_special;
+            this.transition = DFA32_transition;
+        }
+        public String getDescription() {
+            return "6541:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA32_1 = input.LA(1);
+
+                         
+                        int index32_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred127_InternalStatemachineDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index32_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 32, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA37_eotS =
+        "\43\uffff";
+    static final String DFA37_eofS =
+        "\43\uffff";
+    static final String DFA37_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA37_maxS =
+        "\1\u010e\2\0\40\uffff";
+    static final String DFA37_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA37_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA37_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\123\uffff\1\5\77\uffff\1\2\47\uffff\2\5\3\uffff\1"+
+            "\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff"+
+            "\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
+    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
+    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
+    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
+    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
+    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
+    static final short[][] DFA37_transition;
+
+    static {
+        int numStates = DFA37_transitionS.length;
+        DFA37_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
+        }
+    }
+
+    class DFA37 extends DFA {
+
+        public DFA37(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 37;
+            this.eot = DFA37_eot;
+            this.eof = DFA37_eof;
+            this.min = DFA37_min;
+            this.max = DFA37_max;
+            this.accept = DFA37_accept;
+            this.special = DFA37_special;
+            this.transition = DFA37_transition;
+        }
+        public String getDescription() {
+            return "6653:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA37_1 = input.LA(1);
+
+                         
+                        int index37_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index37_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA37_2 = input.LA(1);
+
+                         
+                        int index37_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index37_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 37, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA40_eotS =
+        "\43\uffff";
+    static final String DFA40_eofS =
+        "\43\uffff";
+    static final String DFA40_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA40_maxS =
+        "\1\u010e\2\0\40\uffff";
+    static final String DFA40_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA40_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA40_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\123\uffff\1\5\77\uffff\1\2\47\uffff\2\5\3\uffff\1"+
+            "\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff"+
+            "\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
+    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
+    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
+    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
+    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
+    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
+    static final short[][] DFA40_transition;
+
+    static {
+        int numStates = DFA40_transitionS.length;
+        DFA40_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+        }
+    }
+
+    class DFA40 extends DFA {
+
+        public DFA40(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 40;
+            this.eot = DFA40_eot;
+            this.eof = DFA40_eof;
+            this.min = DFA40_min;
+            this.max = DFA40_max;
+            this.accept = DFA40_accept;
+            this.special = DFA40_special;
+            this.transition = DFA40_transition;
+        }
+        public String getDescription() {
+            return "6747:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA40_1 = input.LA(1);
+
+                         
+                        int index40_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred138_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA40_2 = input.LA(1);
+
+                         
+                        int index40_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred138_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 40, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA49_eotS =
+        "\7\uffff";
+    static final String DFA49_eofS =
+        "\2\uffff\1\4\3\uffff\1\4";
+    static final String DFA49_minS =
+        "\1\4\1\uffff\1\53\1\4\2\uffff\1\53";
+    static final String DFA49_maxS =
+        "\1\56\1\uffff\1\u00f2\1\44\2\uffff\1\u00f2";
+    static final String DFA49_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+    static final String DFA49_specialS =
+        "\7\uffff}>";
+    static final String[] DFA49_transitionS = {
+            "\1\2\51\uffff\1\1",
+            "",
+            "\1\3\u00c6\uffff\1\4",
+            "\1\6\37\uffff\1\5",
+            "",
+            "",
+            "\1\3\u00c6\uffff\1\4"
+    };
+
+    static final short[] DFA49_eot = DFA.unpackEncodedString(DFA49_eotS);
+    static final short[] DFA49_eof = DFA.unpackEncodedString(DFA49_eofS);
+    static final char[] DFA49_min = DFA.unpackEncodedStringToUnsignedChars(DFA49_minS);
+    static final char[] DFA49_max = DFA.unpackEncodedStringToUnsignedChars(DFA49_maxS);
+    static final short[] DFA49_accept = DFA.unpackEncodedString(DFA49_acceptS);
+    static final short[] DFA49_special = DFA.unpackEncodedString(DFA49_specialS);
+    static final short[][] DFA49_transition;
+
+    static {
+        int numStates = DFA49_transitionS.length;
+        DFA49_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA49_transition[i] = DFA.unpackEncodedString(DFA49_transitionS[i]);
+        }
+    }
+
+    class DFA49 extends DFA {
+
+        public DFA49(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 49;
+            this.eot = DFA49_eot;
+            this.eof = DFA49_eof;
+            this.min = DFA49_min;
+            this.max = DFA49_max;
+            this.accept = DFA49_accept;
+            this.special = DFA49_special;
+            this.transition = DFA49_transition;
+        }
+        public String getDescription() {
+            return "6947:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA108_eotS =
+        "\12\uffff";
+    static final String DFA108_eofS =
+        "\1\10\11\uffff";
+    static final String DFA108_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA108_maxS =
+        "\1\u010e\7\0\2\uffff";
+    static final String DFA108_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA108_specialS =
+        "\1\uffff\1\2\1\0\1\5\1\4\1\3\1\6\1\1\2\uffff}>";
+    static final String[] DFA108_transitionS = {
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\123"+
+            "\uffff\2\10\76\uffff\2\10\14\uffff\1\10\30\uffff\30\10\5\uffff"+
+            "\2\10\1\uffff\2\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA108_eot = DFA.unpackEncodedString(DFA108_eotS);
+    static final short[] DFA108_eof = DFA.unpackEncodedString(DFA108_eofS);
+    static final char[] DFA108_min = DFA.unpackEncodedStringToUnsignedChars(DFA108_minS);
+    static final char[] DFA108_max = DFA.unpackEncodedStringToUnsignedChars(DFA108_maxS);
+    static final short[] DFA108_accept = DFA.unpackEncodedString(DFA108_acceptS);
+    static final short[] DFA108_special = DFA.unpackEncodedString(DFA108_specialS);
+    static final short[][] DFA108_transition;
+
+    static {
+        int numStates = DFA108_transitionS.length;
+        DFA108_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA108_transition[i] = DFA.unpackEncodedString(DFA108_transitionS[i]);
+        }
+    }
+
+    class DFA108 extends DFA {
+
+        public DFA108(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 108;
+            this.eot = DFA108_eot;
+            this.eof = DFA108_eof;
+            this.min = DFA108_min;
+            this.max = DFA108_max;
+            this.accept = DFA108_accept;
+            this.special = DFA108_special;
+            this.transition = DFA108_transition;
+        }
+        public String getDescription() {
+            return "22820:1: ( rule__XAssignment__Group_1_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA108_2 = input.LA(1);
+
+                         
+                        int index108_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA108_7 = input.LA(1);
+
+                         
+                        int index108_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA108_1 = input.LA(1);
+
+                         
+                        int index108_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA108_5 = input.LA(1);
+
+                         
+                        int index108_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA108_4 = input.LA(1);
+
+                         
+                        int index108_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA108_3 = input.LA(1);
+
+                         
+                        int index108_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA108_6 = input.LA(1);
+
+                         
+                        int index108_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalStatemachineDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index108_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 108, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA114_eotS =
+        "\13\uffff";
+    static final String DFA114_eofS =
+        "\1\1\12\uffff";
+    static final String DFA114_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA114_maxS =
+        "\1\u010e\1\uffff\10\0\1\uffff";
+    static final String DFA114_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA114_specialS =
+        "\2\uffff\1\6\1\5\1\0\1\3\1\2\1\7\1\1\1\4\1\uffff}>";
+    static final String[] DFA114_transitionS = {
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\123"+
+            "\uffff\2\1\76\uffff\2\1\14\uffff\1\1\30\uffff\30\1\5\uffff\2"+
+            "\1\1\uffff\2\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA114_eot = DFA.unpackEncodedString(DFA114_eotS);
+    static final short[] DFA114_eof = DFA.unpackEncodedString(DFA114_eofS);
+    static final char[] DFA114_min = DFA.unpackEncodedStringToUnsignedChars(DFA114_minS);
+    static final char[] DFA114_max = DFA.unpackEncodedStringToUnsignedChars(DFA114_maxS);
+    static final short[] DFA114_accept = DFA.unpackEncodedString(DFA114_acceptS);
+    static final short[] DFA114_special = DFA.unpackEncodedString(DFA114_specialS);
+    static final short[][] DFA114_transition;
+
+    static {
+        int numStates = DFA114_transitionS.length;
+        DFA114_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA114_transition[i] = DFA.unpackEncodedString(DFA114_transitionS[i]);
+        }
+    }
+
+    class DFA114 extends DFA {
+
+        public DFA114(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 114;
+            this.eot = DFA114_eot;
+            this.eof = DFA114_eof;
+            this.min = DFA114_min;
+            this.max = DFA114_max;
+            this.accept = DFA114_accept;
+            this.special = DFA114_special;
+            this.transition = DFA114_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 24312:1: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA114_4 = input.LA(1);
+
+                         
+                        int index114_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA114_8 = input.LA(1);
+
+                         
+                        int index114_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA114_6 = input.LA(1);
+
+                         
+                        int index114_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA114_5 = input.LA(1);
+
+                         
+                        int index114_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA114_9 = input.LA(1);
+
+                         
+                        int index114_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA114_3 = input.LA(1);
+
+                         
+                        int index114_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA114_2 = input.LA(1);
+
+                         
+                        int index114_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA114_7 = input.LA(1);
+
+                         
+                        int index114_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred282_InternalStatemachineDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index114_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 114, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA121_eotS =
+        "\116\uffff";
+    static final String DFA121_eofS =
+        "\1\2\115\uffff";
+    static final String DFA121_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA121_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA121_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA121_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA121_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\1\1\1\2\14\uffff\1"+
+            "\2\30\uffff\30\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA121_eot = DFA.unpackEncodedString(DFA121_eotS);
+    static final short[] DFA121_eof = DFA.unpackEncodedString(DFA121_eofS);
+    static final char[] DFA121_min = DFA.unpackEncodedStringToUnsignedChars(DFA121_minS);
+    static final char[] DFA121_max = DFA.unpackEncodedStringToUnsignedChars(DFA121_maxS);
+    static final short[] DFA121_accept = DFA.unpackEncodedString(DFA121_acceptS);
+    static final short[] DFA121_special = DFA.unpackEncodedString(DFA121_specialS);
+    static final short[][] DFA121_transition;
+
+    static {
+        int numStates = DFA121_transitionS.length;
+        DFA121_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA121_transition[i] = DFA.unpackEncodedString(DFA121_transitionS[i]);
+        }
+    }
+
+    class DFA121 extends DFA {
+
+        public DFA121(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 121;
+            this.eot = DFA121_eot;
+            this.eof = DFA121_eof;
+            this.min = DFA121_min;
+            this.max = DFA121_max;
+            this.accept = DFA121_accept;
+            this.special = DFA121_special;
+            this.transition = DFA121_transition;
+        }
+        public String getDescription() {
+            return "26139:1: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA121_1 = input.LA(1);
+
+                         
+                        int index121_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred289_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index121_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 121, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA122_eotS =
+        "\116\uffff";
+    static final String DFA122_eofS =
+        "\1\2\115\uffff";
+    static final String DFA122_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA122_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA122_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA122_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA122_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\2\2\14\uffff\1\2\30"+
+            "\uffff\2\2\1\1\25\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA122_eot = DFA.unpackEncodedString(DFA122_eotS);
+    static final short[] DFA122_eof = DFA.unpackEncodedString(DFA122_eofS);
+    static final char[] DFA122_min = DFA.unpackEncodedStringToUnsignedChars(DFA122_minS);
+    static final char[] DFA122_max = DFA.unpackEncodedStringToUnsignedChars(DFA122_maxS);
+    static final short[] DFA122_accept = DFA.unpackEncodedString(DFA122_acceptS);
+    static final short[] DFA122_special = DFA.unpackEncodedString(DFA122_specialS);
+    static final short[][] DFA122_transition;
+
+    static {
+        int numStates = DFA122_transitionS.length;
+        DFA122_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA122_transition[i] = DFA.unpackEncodedString(DFA122_transitionS[i]);
+        }
+    }
+
+    class DFA122 extends DFA {
+
+        public DFA122(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 122;
+            this.eot = DFA122_eot;
+            this.eof = DFA122_eof;
+            this.min = DFA122_min;
+            this.max = DFA122_max;
+            this.accept = DFA122_accept;
+            this.special = DFA122_special;
+            this.transition = DFA122_transition;
+        }
+        public String getDescription() {
+            return "26167:1: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA122_1 = input.LA(1);
+
+                         
+                        int index122_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index122_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 122, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA130_eotS =
+        "\46\uffff";
+    static final String DFA130_eofS =
+        "\46\uffff";
+    static final String DFA130_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA130_maxS =
+        "\1\u010e\2\0\43\uffff";
+    static final String DFA130_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA130_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA130_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3"+
+            "\uffff\7\5\123\uffff\1\5\77\uffff\1\2\46\uffff\3\5\3\uffff\1"+
+            "\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\2\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA130_eot = DFA.unpackEncodedString(DFA130_eotS);
+    static final short[] DFA130_eof = DFA.unpackEncodedString(DFA130_eofS);
+    static final char[] DFA130_min = DFA.unpackEncodedStringToUnsignedChars(DFA130_minS);
+    static final char[] DFA130_max = DFA.unpackEncodedStringToUnsignedChars(DFA130_maxS);
+    static final short[] DFA130_accept = DFA.unpackEncodedString(DFA130_acceptS);
+    static final short[] DFA130_special = DFA.unpackEncodedString(DFA130_specialS);
+    static final short[][] DFA130_transition;
+
+    static {
+        int numStates = DFA130_transitionS.length;
+        DFA130_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA130_transition[i] = DFA.unpackEncodedString(DFA130_transitionS[i]);
+        }
+    }
+
+    class DFA130 extends DFA {
+
+        public DFA130(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 130;
+            this.eot = DFA130_eot;
+            this.eof = DFA130_eof;
+            this.min = DFA130_min;
+            this.max = DFA130_max;
+            this.accept = DFA130_accept;
+            this.special = DFA130_special;
+            this.transition = DFA130_transition;
+        }
+        public String getDescription() {
+            return "27308:1: ( rule__XClosure__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA130_1 = input.LA(1);
+
+                         
+                        int index130_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred298_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index130_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA130_2 = input.LA(1);
+
+                         
+                        int index130_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred298_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index130_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 130, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA140_eotS =
+        "\42\uffff";
+    static final String DFA140_eofS =
+        "\42\uffff";
+    static final String DFA140_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA140_maxS =
+        "\1\u010e\2\0\37\uffff";
+    static final String DFA140_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA140_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA140_transitionS = {
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4"+
+            "\uffff\6\4\123\uffff\1\4\77\uffff\1\2\47\uffff\2\4\3\uffff\1"+
+            "\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA140_eot = DFA.unpackEncodedString(DFA140_eotS);
+    static final short[] DFA140_eof = DFA.unpackEncodedString(DFA140_eofS);
+    static final char[] DFA140_min = DFA.unpackEncodedStringToUnsignedChars(DFA140_minS);
+    static final char[] DFA140_max = DFA.unpackEncodedStringToUnsignedChars(DFA140_maxS);
+    static final short[] DFA140_accept = DFA.unpackEncodedString(DFA140_acceptS);
+    static final short[] DFA140_special = DFA.unpackEncodedString(DFA140_specialS);
+    static final short[][] DFA140_transition;
+
+    static {
+        int numStates = DFA140_transitionS.length;
+        DFA140_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA140_transition[i] = DFA.unpackEncodedString(DFA140_transitionS[i]);
+        }
+    }
+
+    class DFA140 extends DFA {
+
+        public DFA140(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 140;
+            this.eot = DFA140_eot;
+            this.eof = DFA140_eof;
+            this.min = DFA140_min;
+            this.max = DFA140_max;
+            this.accept = DFA140_accept;
+            this.special = DFA140_special;
+            this.transition = DFA140_transition;
+        }
+        public String getDescription() {
+            return "28976:1: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA140_1 = input.LA(1);
+
+                         
+                        int index140_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred308_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index140_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA140_2 = input.LA(1);
+
+                         
+                        int index140_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred308_InternalStatemachineDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index140_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 140, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA153_eotS =
+        "\116\uffff";
+    static final String DFA153_eofS =
+        "\1\2\115\uffff";
+    static final String DFA153_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA153_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA153_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA153_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA153_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\1\1\1\2\14\uffff\1"+
+            "\2\30\uffff\30\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA153_eot = DFA.unpackEncodedString(DFA153_eotS);
+    static final short[] DFA153_eof = DFA.unpackEncodedString(DFA153_eofS);
+    static final char[] DFA153_min = DFA.unpackEncodedStringToUnsignedChars(DFA153_minS);
+    static final char[] DFA153_max = DFA.unpackEncodedStringToUnsignedChars(DFA153_maxS);
+    static final short[] DFA153_accept = DFA.unpackEncodedString(DFA153_acceptS);
+    static final short[] DFA153_special = DFA.unpackEncodedString(DFA153_specialS);
+    static final short[][] DFA153_transition;
+
+    static {
+        int numStates = DFA153_transitionS.length;
+        DFA153_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA153_transition[i] = DFA.unpackEncodedString(DFA153_transitionS[i]);
+        }
+    }
+
+    class DFA153 extends DFA {
+
+        public DFA153(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 153;
+            this.eot = DFA153_eot;
+            this.eof = DFA153_eof;
+            this.min = DFA153_min;
+            this.max = DFA153_max;
+            this.accept = DFA153_accept;
+            this.special = DFA153_special;
+            this.transition = DFA153_transition;
+        }
+        public String getDescription() {
+            return "31464:1: ( rule__XFeatureCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA153_1 = input.LA(1);
+
+                         
+                        int index153_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred321_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index153_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 153, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA154_eotS =
+        "\116\uffff";
+    static final String DFA154_eofS =
+        "\1\2\115\uffff";
+    static final String DFA154_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA154_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA154_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA154_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA154_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\2\2\14\uffff\1\2\30"+
+            "\uffff\2\2\1\1\25\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA154_eot = DFA.unpackEncodedString(DFA154_eotS);
+    static final short[] DFA154_eof = DFA.unpackEncodedString(DFA154_eofS);
+    static final char[] DFA154_min = DFA.unpackEncodedStringToUnsignedChars(DFA154_minS);
+    static final char[] DFA154_max = DFA.unpackEncodedStringToUnsignedChars(DFA154_maxS);
+    static final short[] DFA154_accept = DFA.unpackEncodedString(DFA154_acceptS);
+    static final short[] DFA154_special = DFA.unpackEncodedString(DFA154_specialS);
+    static final short[][] DFA154_transition;
+
+    static {
+        int numStates = DFA154_transitionS.length;
+        DFA154_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA154_transition[i] = DFA.unpackEncodedString(DFA154_transitionS[i]);
+        }
+    }
+
+    class DFA154 extends DFA {
+
+        public DFA154(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 154;
+            this.eot = DFA154_eot;
+            this.eof = DFA154_eof;
+            this.min = DFA154_min;
+            this.max = DFA154_max;
+            this.accept = DFA154_accept;
+            this.special = DFA154_special;
+            this.transition = DFA154_transition;
+        }
+        public String getDescription() {
+            return "31492:1: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA154_1 = input.LA(1);
+
+                         
+                        int index154_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred322_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index154_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 154, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA158_eotS =
+        "\116\uffff";
+    static final String DFA158_eofS =
+        "\1\2\115\uffff";
+    static final String DFA158_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA158_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA158_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA158_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA158_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\27\2\123\uffff\2\2\76\uffff\2\2\14\uffff"+
+            "\1\2\30\uffff\30\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA158_eot = DFA.unpackEncodedString(DFA158_eotS);
+    static final short[] DFA158_eof = DFA.unpackEncodedString(DFA158_eofS);
+    static final char[] DFA158_min = DFA.unpackEncodedStringToUnsignedChars(DFA158_minS);
+    static final char[] DFA158_max = DFA.unpackEncodedStringToUnsignedChars(DFA158_maxS);
+    static final short[] DFA158_accept = DFA.unpackEncodedString(DFA158_acceptS);
+    static final short[] DFA158_special = DFA.unpackEncodedString(DFA158_specialS);
+    static final short[][] DFA158_transition;
+
+    static {
+        int numStates = DFA158_transitionS.length;
+        DFA158_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA158_transition[i] = DFA.unpackEncodedString(DFA158_transitionS[i]);
+        }
+    }
+
+    class DFA158 extends DFA {
+
+        public DFA158(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 158;
+            this.eot = DFA158_eot;
+            this.eof = DFA158_eof;
+            this.min = DFA158_min;
+            this.max = DFA158_max;
+            this.accept = DFA158_accept;
+            this.special = DFA158_special;
+            this.transition = DFA158_transition;
+        }
+        public String getDescription() {
+            return "32030:1: ( rule__XConstructorCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA158_1 = input.LA(1);
+
+                         
+                        int index158_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index158_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 158, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA159_eotS =
+        "\116\uffff";
+    static final String DFA159_eofS =
+        "\1\2\115\uffff";
+    static final String DFA159_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA159_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA159_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA159_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA159_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\1\1\1\2\14\uffff\1"+
+            "\2\30\uffff\30\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA159_eot = DFA.unpackEncodedString(DFA159_eotS);
+    static final short[] DFA159_eof = DFA.unpackEncodedString(DFA159_eofS);
+    static final char[] DFA159_min = DFA.unpackEncodedStringToUnsignedChars(DFA159_minS);
+    static final char[] DFA159_max = DFA.unpackEncodedStringToUnsignedChars(DFA159_maxS);
+    static final short[] DFA159_accept = DFA.unpackEncodedString(DFA159_acceptS);
+    static final short[] DFA159_special = DFA.unpackEncodedString(DFA159_specialS);
+    static final short[][] DFA159_transition;
+
+    static {
+        int numStates = DFA159_transitionS.length;
+        DFA159_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA159_transition[i] = DFA.unpackEncodedString(DFA159_transitionS[i]);
+        }
+    }
+
+    class DFA159 extends DFA {
+
+        public DFA159(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 159;
+            this.eot = DFA159_eot;
+            this.eof = DFA159_eof;
+            this.min = DFA159_min;
+            this.max = DFA159_max;
+            this.accept = DFA159_accept;
+            this.special = DFA159_special;
+            this.transition = DFA159_transition;
+        }
+        public String getDescription() {
+            return "32059:1: ( rule__XConstructorCall__Group_4__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA159_1 = input.LA(1);
+
+                         
+                        int index159_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index159_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 159, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA160_eotS =
+        "\116\uffff";
+    static final String DFA160_eofS =
+        "\1\2\115\uffff";
+    static final String DFA160_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA160_maxS =
+        "\1\u010e\1\0\114\uffff";
+    static final String DFA160_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA160_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA160_transitionS = {
+            "\5\2\5\uffff\45\2\123\uffff\2\2\76\uffff\2\2\14\uffff\1\2\30"+
+            "\uffff\2\2\1\1\25\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA160_eot = DFA.unpackEncodedString(DFA160_eotS);
+    static final short[] DFA160_eof = DFA.unpackEncodedString(DFA160_eofS);
+    static final char[] DFA160_min = DFA.unpackEncodedStringToUnsignedChars(DFA160_minS);
+    static final char[] DFA160_max = DFA.unpackEncodedStringToUnsignedChars(DFA160_maxS);
+    static final short[] DFA160_accept = DFA.unpackEncodedString(DFA160_acceptS);
+    static final short[] DFA160_special = DFA.unpackEncodedString(DFA160_specialS);
+    static final short[][] DFA160_transition;
+
+    static {
+        int numStates = DFA160_transitionS.length;
+        DFA160_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA160_transition[i] = DFA.unpackEncodedString(DFA160_transitionS[i]);
+        }
+    }
+
+    class DFA160 extends DFA {
+
+        public DFA160(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 160;
+            this.eot = DFA160_eot;
+            this.eof = DFA160_eof;
+            this.min = DFA160_min;
+            this.max = DFA160_max;
+            this.accept = DFA160_accept;
+            this.special = DFA160_special;
+            this.transition = DFA160_transition;
+        }
+        public String getDescription() {
+            return "32087:1: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA160_1 = input.LA(1);
+
+                         
+                        int index160_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred328_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index160_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 160, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA165_eotS =
+        "\116\uffff";
+    static final String DFA165_eofS =
+        "\1\41\115\uffff";
+    static final String DFA165_minS =
+        "\1\4\40\0\55\uffff";
+    static final String DFA165_maxS =
+        "\1\u010e\40\0\55\uffff";
+    static final String DFA165_acceptS =
+        "\41\uffff\1\2\53\uffff\1\1";
+    static final String DFA165_specialS =
+        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+
+        "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] DFA165_transitionS = {
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\15\41\1\15\6\41\1\10\1\7\4"+
+            "\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\123\uffff\1\12\1\41\76"+
+            "\uffff\1\40\1\41\14\uffff\1\41\30\uffff\1\41\1\17\1\20\3\41"+
+            "\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36"+
+            "\1\37\1\41\1\14\1\41\5\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA165_eot = DFA.unpackEncodedString(DFA165_eotS);
+    static final short[] DFA165_eof = DFA.unpackEncodedString(DFA165_eofS);
+    static final char[] DFA165_min = DFA.unpackEncodedStringToUnsignedChars(DFA165_minS);
+    static final char[] DFA165_max = DFA.unpackEncodedStringToUnsignedChars(DFA165_maxS);
+    static final short[] DFA165_accept = DFA.unpackEncodedString(DFA165_acceptS);
+    static final short[] DFA165_special = DFA.unpackEncodedString(DFA165_specialS);
+    static final short[][] DFA165_transition;
+
+    static {
+        int numStates = DFA165_transitionS.length;
+        DFA165_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA165_transition[i] = DFA.unpackEncodedString(DFA165_transitionS[i]);
+        }
+    }
+
+    class DFA165 extends DFA {
+
+        public DFA165(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 165;
+            this.eot = DFA165_eot;
+            this.eof = DFA165_eof;
+            this.min = DFA165_min;
+            this.max = DFA165_max;
+            this.accept = DFA165_accept;
+            this.special = DFA165_special;
+            this.transition = DFA165_transition;
+        }
+        public String getDescription() {
+            return "33140:1: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA165_1 = input.LA(1);
+
+                         
+                        int index165_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA165_2 = input.LA(1);
+
+                         
+                        int index165_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA165_3 = input.LA(1);
+
+                         
+                        int index165_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA165_4 = input.LA(1);
+
+                         
+                        int index165_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA165_5 = input.LA(1);
+
+                         
+                        int index165_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA165_6 = input.LA(1);
+
+                         
+                        int index165_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA165_7 = input.LA(1);
+
+                         
+                        int index165_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA165_8 = input.LA(1);
+
+                         
+                        int index165_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA165_9 = input.LA(1);
+
+                         
+                        int index165_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA165_10 = input.LA(1);
+
+                         
+                        int index165_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA165_11 = input.LA(1);
+
+                         
+                        int index165_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA165_12 = input.LA(1);
+
+                         
+                        int index165_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA165_13 = input.LA(1);
+
+                         
+                        int index165_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA165_14 = input.LA(1);
+
+                         
+                        int index165_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA165_15 = input.LA(1);
+
+                         
+                        int index165_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA165_16 = input.LA(1);
+
+                         
+                        int index165_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA165_17 = input.LA(1);
+
+                         
+                        int index165_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA165_18 = input.LA(1);
+
+                         
+                        int index165_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA165_19 = input.LA(1);
+
+                         
+                        int index165_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA165_20 = input.LA(1);
+
+                         
+                        int index165_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA165_21 = input.LA(1);
+
+                         
+                        int index165_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA165_22 = input.LA(1);
+
+                         
+                        int index165_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA165_23 = input.LA(1);
+
+                         
+                        int index165_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA165_24 = input.LA(1);
+
+                         
+                        int index165_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA165_25 = input.LA(1);
+
+                         
+                        int index165_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA165_26 = input.LA(1);
+
+                         
+                        int index165_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA165_27 = input.LA(1);
+
+                         
+                        int index165_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA165_28 = input.LA(1);
+
+                         
+                        int index165_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA165_29 = input.LA(1);
+
+                         
+                        int index165_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA165_30 = input.LA(1);
+
+                         
+                        int index165_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA165_31 = input.LA(1);
+
+                         
+                        int index165_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA165_32 = input.LA(1);
+
+                         
+                        int index165_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred333_InternalStatemachineDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index165_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 165, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA173_eotS =
+        "\117\uffff";
+    static final String DFA173_eofS =
+        "\1\2\116\uffff";
+    static final String DFA173_minS =
+        "\1\4\1\0\115\uffff";
+    static final String DFA173_maxS =
+        "\1\u010e\1\0\115\uffff";
+    static final String DFA173_acceptS =
+        "\2\uffff\1\2\113\uffff\1\1";
+    static final String DFA173_specialS =
+        "\1\uffff\1\0\115\uffff}>";
+    static final String[] DFA173_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\27\2\123\uffff\2\2\76\uffff\2\2\14\uffff"+
+            "\1\2\30\uffff\30\2\1\uffff\1\2\3\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA173_eot = DFA.unpackEncodedString(DFA173_eotS);
+    static final short[] DFA173_eof = DFA.unpackEncodedString(DFA173_eofS);
+    static final char[] DFA173_min = DFA.unpackEncodedStringToUnsignedChars(DFA173_minS);
+    static final char[] DFA173_max = DFA.unpackEncodedStringToUnsignedChars(DFA173_maxS);
+    static final short[] DFA173_accept = DFA.unpackEncodedString(DFA173_acceptS);
+    static final short[] DFA173_special = DFA.unpackEncodedString(DFA173_specialS);
+    static final short[][] DFA173_transition;
+
+    static {
+        int numStates = DFA173_transitionS.length;
+        DFA173_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA173_transition[i] = DFA.unpackEncodedString(DFA173_transitionS[i]);
+        }
+    }
+
+    class DFA173 extends DFA {
+
+        public DFA173(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 173;
+            this.eot = DFA173_eot;
+            this.eof = DFA173_eof;
+            this.min = DFA173_min;
+            this.max = DFA173_max;
+            this.accept = DFA173_accept;
+            this.special = DFA173_special;
+            this.transition = DFA173_transition;
+        }
+        public String getDescription() {
+            return "34595:1: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA173_1 = input.LA(1);
+
+                         
+                        int index173_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred341_InternalStatemachineDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index173_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 173, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA176_eotS =
+        "\117\uffff";
+    static final String DFA176_eofS =
+        "\1\2\116\uffff";
+    static final String DFA176_minS =
+        "\1\4\1\0\115\uffff";
+    static final String DFA176_maxS =
+        "\1\u010e\1\0\115\uffff";
+    static final String DFA176_acceptS =
+        "\2\uffff\1\2\113\uffff\1\1";
+    static final String DFA176_specialS =
+        "\1\uffff\1\0\115\uffff}>";
+    static final String[] DFA176_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\27\2\123\uffff\2\2\76\uffff\2\2\14\uffff"+
+            "\1\2\30\uffff\30\2\1\uffff\1\2\3\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA176_eot = DFA.unpackEncodedString(DFA176_eotS);
+    static final short[] DFA176_eof = DFA.unpackEncodedString(DFA176_eofS);
+    static final char[] DFA176_min = DFA.unpackEncodedStringToUnsignedChars(DFA176_minS);
+    static final char[] DFA176_max = DFA.unpackEncodedStringToUnsignedChars(DFA176_maxS);
+    static final short[] DFA176_accept = DFA.unpackEncodedString(DFA176_acceptS);
+    static final short[] DFA176_special = DFA.unpackEncodedString(DFA176_specialS);
+    static final short[][] DFA176_transition;
+
+    static {
+        int numStates = DFA176_transitionS.length;
+        DFA176_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA176_transition[i] = DFA.unpackEncodedString(DFA176_transitionS[i]);
+        }
+    }
+
+    class DFA176 extends DFA {
+
+        public DFA176(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 176;
+            this.eot = DFA176_eot;
+            this.eof = DFA176_eof;
+            this.min = DFA176_min;
+            this.max = DFA176_max;
+            this.accept = DFA176_accept;
+            this.special = DFA176_special;
+            this.transition = DFA176_transition;
+        }
+        public String getDescription() {
+            return "34906:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA176_1 = input.LA(1);
+
+                         
+                        int index176_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred344_InternalStatemachineDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index176_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 176, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA188_eotS =
+        "\15\uffff";
+    static final String DFA188_eofS =
+        "\1\2\14\uffff";
+    static final String DFA188_minS =
+        "\1\u0087\1\4\1\uffff\1\u00cb\1\63\7\0\1\uffff";
+    static final String DFA188_maxS =
+        "\1\u00ea\1\4\1\uffff\1\u00cb\1\71\7\0\1\uffff";
+    static final String DFA188_acceptS =
+        "\2\uffff\1\2\11\uffff\1\1";
+    static final String DFA188_specialS =
+        "\5\uffff\1\2\1\4\1\0\1\1\1\3\1\5\1\6\1\uffff}>";
+    static final String[] DFA188_transitionS = {
+            "\1\2\141\uffff\1\1\1\2",
+            "\1\3",
+            "",
+            "\1\4",
+            "\1\5\1\6\1\7\1\10\1\11\1\12\1\13",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA188_eot = DFA.unpackEncodedString(DFA188_eotS);
+    static final short[] DFA188_eof = DFA.unpackEncodedString(DFA188_eofS);
+    static final char[] DFA188_min = DFA.unpackEncodedStringToUnsignedChars(DFA188_minS);
+    static final char[] DFA188_max = DFA.unpackEncodedStringToUnsignedChars(DFA188_maxS);
+    static final short[] DFA188_accept = DFA.unpackEncodedString(DFA188_acceptS);
+    static final short[] DFA188_special = DFA.unpackEncodedString(DFA188_specialS);
+    static final short[][] DFA188_transition;
+
+    static {
+        int numStates = DFA188_transitionS.length;
+        DFA188_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA188_transition[i] = DFA.unpackEncodedString(DFA188_transitionS[i]);
+        }
+    }
+
+    class DFA188 extends DFA {
+
+        public DFA188(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 188;
+            this.eot = DFA188_eot;
+            this.eof = DFA188_eof;
+            this.min = DFA188_min;
+            this.max = DFA188_max;
+            this.accept = DFA188_accept;
+            this.special = DFA188_special;
+            this.transition = DFA188_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 36226:7: ( ( rule__StatemachineControlField__FieldsAssignment_3_0 )=> rule__StatemachineControlField__FieldsAssignment_3_0 )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA188_7 = input.LA(1);
+
+                         
+                        int index188_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA188_8 = input.LA(1);
+
+                         
+                        int index188_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA188_5 = input.LA(1);
+
+                         
+                        int index188_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA188_9 = input.LA(1);
+
+                         
+                        int index188_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA188_6 = input.LA(1);
+
+                         
+                        int index188_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA188_10 = input.LA(1);
+
+                         
+                        int index188_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA188_11 = input.LA(1);
+
+                         
+                        int index188_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred357_InternalStatemachineDSL()) ) {s = 12;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index188_11);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 188, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleStatemachineModel_in_entryRuleStatemachineModel67 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineModel74 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineModel__PackagesAssignment_in_ruleStatemachineModel100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleStatemachinePackage_in_entryRuleStatemachinePackage128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachinePackage135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__0_in_ruleStatemachinePackage161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachine_in_entryRuleStatemachine188 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachine195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__0_in_ruleStatemachine221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineEvent_in_entryRuleStatemachineEvent248 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineEvent255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineEvent__Group__0_in_ruleStatemachineEvent281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineState_in_entryRuleStatemachineState308 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineState315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__0_in_ruleStatemachineState341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineTrigger_in_entryRuleStatemachineTrigger368 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineTrigger375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__0_in_ruleStatemachineTrigger401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineAction_in_entryRuleStatemachineAction428 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineAction435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineAction__Alternatives_in_ruleStatemachineAction461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralBlinkRate_in_entryRuleStatemachineActionPeripheralBlinkRate488 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralBlinkRate495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__0_in_ruleStatemachineActionPeripheralBlinkRate521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralClear_in_entryRuleStatemachineActionPeripheralClear548 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralClear555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralClear__Group__0_in_ruleStatemachineActionPeripheralClear581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralCreateWindow_in_entryRuleStatemachineActionPeripheralCreateWindow608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralCreateWindow615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__0_in_ruleStatemachineActionPeripheralCreateWindow641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralCursorType_in_entryRuleStatemachineActionPeripheralCursorType668 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralCursorType675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__0_in_ruleStatemachineActionPeripheralCursorType701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDestroyWindow_in_entryRuleStatemachineActionPeripheralDestroyWindow728 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDestroyWindow735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDestroyWindow__Group__0_in_ruleStatemachineActionPeripheralDestroyWindow761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDeviceBrightness_in_entryRuleStatemachineActionPeripheralDeviceBrightness788 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDeviceBrightness795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__0_in_ruleStatemachineActionPeripheralDeviceBrightness821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayBitmap_in_entryRuleStatemachineActionPeripheralDisplayBitmap848 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayBitmap855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__0_in_ruleStatemachineActionPeripheralDisplayBitmap881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayText_in_entryRuleStatemachineActionPeripheralDisplayText908 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayText915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__0_in_ruleStatemachineActionPeripheralDisplayText941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayTextAt_in_entryRuleStatemachineActionPeripheralDisplayTextAt968 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayTextAt975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__0_in_ruleStatemachineActionPeripheralDisplayTextAt1001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralInterCharacterWait_in_entryRuleStatemachineActionPeripheralInterCharacterWait1028 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralInterCharacterWait1035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__0_in_ruleStatemachineActionPeripheralInterCharacterWait1061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeFormat_in_entryRuleStatemachineActionPeripheralMarqueeFormat1088 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeFormat1095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__0_in_ruleStatemachineActionPeripheralMarqueeFormat1121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeRepeatWait_in_entryRuleStatemachineActionPeripheralMarqueeRepeatWait1148 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeRepeatWait1155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0_in_ruleStatemachineActionPeripheralMarqueeRepeatWait1181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeType_in_entryRuleStatemachineActionPeripheralMarqueeType1208 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeType1215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__0_in_ruleStatemachineActionPeripheralMarqueeType1241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeUnitWait_in_entryRuleStatemachineActionPeripheralMarqueeUnitWait1268 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeUnitWait1275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0_in_ruleStatemachineActionPeripheralMarqueeUnitWait1301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralScroll_in_entryRuleStatemachineActionPeripheralScroll1328 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralScroll1335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__0_in_ruleStatemachineActionPeripheralScroll1361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralOpenDrawer_in_entryRuleStatemachineActionPeripheralOpenDrawer1388 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralOpenDrawer1395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralOpenDrawer__Group__0_in_ruleStatemachineActionPeripheralOpenDrawer1421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintBarcode_in_entryRuleStatemachineActionPeripheralPrintBarcode1448 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintBarcode1455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__0_in_ruleStatemachineActionPeripheralPrintBarcode1481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintBitmap_in_entryRuleStatemachineActionPeripheralPrintBitmap1508 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintBitmap1515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__0_in_ruleStatemachineActionPeripheralPrintBitmap1541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintCut_in_entryRuleStatemachineActionPeripheralPrintCut1568 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintCut1575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__0_in_ruleStatemachineActionPeripheralPrintCut1601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintNormal_in_entryRuleStatemachineActionPeripheralPrintNormal1628 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintNormal1635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__0_in_ruleStatemachineActionPeripheralPrintNormal1661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintRegisterBitmap_in_entryRuleStatemachineActionPeripheralPrintRegisterBitmap1688 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintRegisterBitmap1695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0_in_ruleStatemachineActionPeripheralPrintRegisterBitmap1721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTOpen_in_entryRuleStatemachineActionPeripheralPTOpen1748 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTOpen1755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__0_in_ruleStatemachineActionPeripheralPTOpen1781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTClose_in_entryRuleStatemachineActionPeripheralPTClose1808 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTClose1815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__0_in_ruleStatemachineActionPeripheralPTClose1841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTAcknowledge_in_entryRuleStatemachineActionPeripheralPTAcknowledge1868 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTAcknowledge1875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__0_in_ruleStatemachineActionPeripheralPTAcknowledge1901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTReversal_in_entryRuleStatemachineActionPeripheralPTReversal1928 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTReversal1935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__0_in_ruleStatemachineActionPeripheralPTReversal1961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTRegistration_in_entryRuleStatemachineActionPeripheralPTRegistration1988 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTRegistration1995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__0_in_ruleStatemachineActionPeripheralPTRegistration2021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTAuthorization_in_entryRuleStatemachineActionPeripheralPTAuthorization2048 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTAuthorization2055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__0_in_ruleStatemachineActionPeripheralPTAuthorization2081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTResponse_in_entryRuleStatemachineActionPeripheralPTResponse2108 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTResponse2115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__0_in_ruleStatemachineActionPeripheralPTResponse2141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintReport_in_entryRuleStatemachineActionPeripheralPrintReport2168 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintReport2175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__0_in_ruleStatemachineActionPeripheralPrintReport2201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSource_in_entryRuleStatemachineActionFieldSource2228 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSource2235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSource__Alternatives_in_ruleStatemachineActionFieldSource2261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineOperation_in_entryRuleStatemachineOperation2288 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineOperation2295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__0_in_ruleStatemachineOperation2321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineGuard_in_entryRuleStatemachineGuard2348 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineGuard2355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__0_in_ruleStatemachineGuard2381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineFunction_in_entryRuleStatemachineFunction2408 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineFunction2415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__0_in_ruleStatemachineFunction2441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorage_in_entryRuleStatemachineStorage2468 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineStorage2475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__0_in_ruleStatemachineStorage2501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorageRetrieve_in_entryRuleStatemachineStorageRetrieve2528 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineStorageRetrieve2535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__0_in_ruleStatemachineStorageRetrieve2561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionConditionalTransition_in_entryRuleStatemachineActionConditionalTransition2588 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionConditionalTransition2595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__0_in_ruleStatemachineActionConditionalTransition2621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceString_in_entryRuleStatemachineActionFieldSourceString2648 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceString2655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceString__TextAssignment_in_ruleStatemachineActionFieldSourceString2681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceNumber_in_entryRuleStatemachineActionFieldSourceNumber2708 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceNumber2715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumber__ValueAssignment_in_ruleStatemachineActionFieldSourceNumber2741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvaluate_in_entryRuleStatemachineActionFieldSourceEvaluate2768 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceEvaluate2775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluate__EvaluationtypeAssignment_in_ruleStatemachineActionFieldSourceEvaluate2801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvent_in_entryRuleStatemachineActionFieldSourceEvent2828 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceEvent2835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvent__Group__0_in_ruleStatemachineActionFieldSourceEvent2861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceTranslate_in_entryRuleStatemachineActionFieldSourceTranslate2888 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceTranslate2895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslate__Group__0_in_ruleStatemachineActionFieldSourceTranslate2921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceDtoAttribute_in_entryRuleStatemachineActionFieldSourceDtoAttribute2948 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceDtoAttribute2955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__0_in_ruleStatemachineActionFieldSourceDtoAttribute2981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceMore_in_entryRuleStatemachineActionFieldSourceMore3008 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceMore3015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceMore__Alternatives_in_ruleStatemachineActionFieldSourceMore3041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceStringMore_in_entryRuleStatemachineActionFieldSourceStringMore3068 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceStringMore3075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__0_in_ruleStatemachineActionFieldSourceStringMore3101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceNumberMore_in_entryRuleStatemachineActionFieldSourceNumberMore3128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceNumberMore3135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__0_in_ruleStatemachineActionFieldSourceNumberMore3161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvaluateMore_in_entryRuleStatemachineActionFieldSourceEvaluateMore3188 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceEvaluateMore3195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__0_in_ruleStatemachineActionFieldSourceEvaluateMore3221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceTranslateMore_in_entryRuleStatemachineActionFieldSourceTranslateMore3248 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceTranslateMore3255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__0_in_ruleStatemachineActionFieldSourceTranslateMore3281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldGetMore_in_entryRuleStatemachineActionFieldGetMore3308 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldGetMore3315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__0_in_ruleStatemachineActionFieldGetMore3341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineOperationMore_in_entryRuleStatemachineOperationMore3368 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineOperationMore3375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__0_in_ruleStatemachineOperationMore3401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorageRetrieveMore_in_entryRuleStatemachineStorageRetrieveMore3428 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineStorageRetrieveMore3435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__0_in_ruleStatemachineStorageRetrieveMore3461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceDtoAttributeMore_in_entryRuleStatemachineActionFieldSourceDtoAttributeMore3488 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSourceDtoAttributeMore3495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0_in_ruleStatemachineActionFieldSourceDtoAttributeMore3521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldConcatenation_in_entryRuleStatemachineActionFieldConcatenation3548 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldConcatenation3555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__Group__0_in_ruleStatemachineActionFieldConcatenation3581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineOperationParameter_in_entryRuleStatemachineOperationParameter3608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineOperationParameter3615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameter__SourceAssignment_in_ruleStatemachineOperationParameter3641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineOperationParameterMore_in_entryRuleStatemachineOperationParameterMore3668 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineOperationParameterMore3675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__0_in_ruleStatemachineOperationParameterMore3701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSet_in_entryRuleStatemachineActionFieldSet3728 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldSet3735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__0_in_ruleStatemachineActionFieldSet3761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldClear_in_entryRuleStatemachineActionFieldClear3788 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldClear3795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldClear__Group__0_in_ruleStatemachineActionFieldClear3821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldGet_in_entryRuleStatemachineActionFieldGet3848 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldGet3855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGet__Group__0_in_ruleStatemachineActionFieldGet3881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldRemove_in_entryRuleStatemachineActionFieldRemove3908 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionFieldRemove3915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldRemove__Group__0_in_ruleStatemachineActionFieldRemove3941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionItemVisible_in_entryRuleStatemachineActionItemVisible3970 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionItemVisible3977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemVisible__Group__0_in_ruleStatemachineActionItemVisible4003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionItemInvisible_in_entryRuleStatemachineActionItemInvisible4030 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionItemInvisible4037 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__StatemachineActionItemInvisible__Group__0_in_ruleStatemachineActionItemInvisible4063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionButtonCaption_in_entryRuleStatemachineActionButtonCaption4090 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionButtonCaption4097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__0_in_ruleStatemachineActionButtonCaption4123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionButtonImage_in_entryRuleStatemachineActionButtonImage4150 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionButtonImage4157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__0_in_ruleStatemachineActionButtonImage4183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionDTOFind_in_entryRuleStatemachineActionDTOFind4210 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionDTOFind4217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__0_in_ruleStatemachineActionDTOFind4243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionScheduler_in_entryRuleStatemachineActionScheduler4270 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineActionScheduler4277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionScheduler__Group__0_in_ruleStatemachineActionScheduler4303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControl_in_entryRuleStatemachineControl4330 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControl4337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControl__Alternatives_in_ruleStatemachineControl4363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButton_in_entryRuleStatemachineControlButton4390 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButton4397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__0_in_ruleStatemachineControlButton4423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlField_in_entryRuleStatemachineControlField4450 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlField4457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__0_in_ruleStatemachineControlField4483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlDTO_in_entryRuleStatemachineControlDTO4510 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlDTO4517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__0_in_ruleStatemachineControlDTO4543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlScheduler_in_entryRuleStatemachineControlScheduler4570 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlScheduler4577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__0_in_ruleStatemachineControlScheduler4603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachinePeripheralDeviceLineDisplay_in_entryRuleStatemachinePeripheralDeviceLineDisplay4630 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachinePeripheralDeviceLineDisplay4637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceLineDisplay__Group__0_in_ruleStatemachinePeripheralDeviceLineDisplay4663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachinePeripheralDevicePOSPrinter_in_entryRuleStatemachinePeripheralDevicePOSPrinter4690 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachinePeripheralDevicePOSPrinter4697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePOSPrinter__Group__0_in_ruleStatemachinePeripheralDevicePOSPrinter4723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachinePeripheralDeviceCashDrawer_in_entryRuleStatemachinePeripheralDeviceCashDrawer4750 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachinePeripheralDeviceCashDrawer4757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceCashDrawer__Group__0_in_ruleStatemachinePeripheralDeviceCashDrawer4783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachinePeripheralDevicePT_in_entryRuleStatemachinePeripheralDevicePT4810 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachinePeripheralDevicePT4817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePT__Group__0_in_ruleStatemachinePeripheralDevicePT4843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlPeripheral_in_entryRuleStatemachineControlPeripheral4870 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlPeripheral4877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__0_in_ruleStatemachineControlPeripheral4903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttribute_in_entryRuleStatemachineControlButtonAttribute4930 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButtonAttribute4937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__0_in_ruleStatemachineControlButtonAttribute4963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEvent_in_entryRuleStatemachineControlButtonAttributeEvent4990 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButtonAttributeEvent4997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEvent__Alternatives_in_ruleStatemachineControlButtonAttributeEvent5023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventKeyboard_in_entryRuleStatemachineControlButtonAttributeEventKeyboard5050 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButtonAttributeEventKeyboard5057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__0_in_ruleStatemachineControlButtonAttributeEventKeyboard5083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventIdentity_in_entryRuleStatemachineControlButtonAttributeEventIdentity5110 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButtonAttributeEventIdentity5117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__0_in_ruleStatemachineControlButtonAttributeEventIdentity5143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventEvent_in_entryRuleStatemachineControlButtonAttributeEventEvent5170 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlButtonAttributeEventEvent5177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__0_in_ruleStatemachineControlButtonAttributeEventEvent5203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlFieldAttribute_in_entryRuleStatemachineControlFieldAttribute5230 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlFieldAttribute5237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__0_in_ruleStatemachineControlFieldAttribute5263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlFieldLayout_in_entryRuleStatemachineControlFieldLayout5290 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlFieldLayout5297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldLayout__Group__0_in_ruleStatemachineControlFieldLayout5323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlDTOAttribute_in_entryRuleStatemachineControlDTOAttribute5350 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlDTOAttribute5357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__0_in_ruleStatemachineControlDTOAttribute5383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlSchedulerAttribute_in_entryRuleStatemachineControlSchedulerAttribute5410 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineControlSchedulerAttribute5417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__0_in_ruleStatemachineControlSchedulerAttribute5443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineDTOType_in_entryRuleStatemachineDTOType5470 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineDTOType5477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineDTOType__AttributeTypeAssignment_in_ruleStatemachineDTOType5503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineFieldType_in_entryRuleStatemachineFieldType5530 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineFieldType5537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFieldType__AttributeTypeAssignment_in_ruleStatemachineFieldType5563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineImport_in_entryRuleStatemachineImport5590 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineImport5597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineImport__Group__0_in_ruleStatemachineImport5623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineQualifiedNameWithWildCard_in_entryRuleStatemachineQualifiedNameWithWildCard5650 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStatemachineQualifiedNameWithWildCard5657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group__0_in_ruleStatemachineQualifiedNameWithWildCard5683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5710 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName5717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName5743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID5770 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID5777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID5803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING5829 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING5836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING5862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID5888 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTRANSLATABLEID5895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleTRANSLATABLEID5921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber5947 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSignedNumber5954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__0_in_ruleSignedNumber5980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnsignedNumber_in_entryRuleUnsignedNumber6007 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnsignedNumber6014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0_in_ruleUnsignedNumber6040 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation6067 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation6074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation6100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair6127 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair6134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair6160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList6187 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList6194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList6220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue6247 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue6254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue6280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression6307 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression6314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression6340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression6367 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression6374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression6400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment6426 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment6433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment6459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign6486 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign6493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign6520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign6548 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign6555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign6581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression6608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression6615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression6641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr6668 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr6675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleOpOr6702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression6730 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression6737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression6763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd6790 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd6797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_ruleOpAnd6824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression6852 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression6859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression6885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality6912 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality6919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality6945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression6972 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression6979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression7005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare7032 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare7039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare7065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression7092 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression7099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression7125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther7152 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther7159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther7185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression7212 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression7219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression7245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd7272 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd7279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd7305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression7332 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression7339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression7365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti7392 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti7399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti7425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation7452 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation7459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation7485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary7512 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary7519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary7545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7572 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression7579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression7605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation7632 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation7639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation7665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix7692 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix7699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix7725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall7752 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall7759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall7785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression7812 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression7819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression7845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral7872 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral7879 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral7905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral7932 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral7939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral7965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral7992 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral7999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral8025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral8052 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral8059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral8085 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure8112 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure8119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure8145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure8172 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure8179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure8205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure8232 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure8239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure8265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression8292 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression8299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression8325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression8352 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression8359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression8385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression8412 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression8419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression8445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart8472 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart8479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart8505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression8532 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression8539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression8565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression8592 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression8599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression8625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression8652 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression8659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression8685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression8712 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression8719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression8745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression8772 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression8779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression8805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration8832 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration8839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration8865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration8892 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration8899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration8925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter8952 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter8959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter8985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter9012 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter9019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter9045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall9072 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall9079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall9105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID9132 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID9139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID9165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper9192 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper9199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper9225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall9252 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall9259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall9285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral9312 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral9319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral9345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral9372 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral9379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral9405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral9432 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral9439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral9465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral9492 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral9499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral9525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral9552 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral9559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral9585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression9612 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression9619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression9645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression9672 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression9679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression9705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression9732 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression9739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression9765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression9792 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression9799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression9825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause9852 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause9859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause9885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber9917 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber9924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber9954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference9983 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference9990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference10016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets10043 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets10050 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets10076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef10103 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef10110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef10136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference10163 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference10170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference10196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference10223 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference10230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference10256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference10283 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference10290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference10316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound10343 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound10350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound10376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded10403 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded10410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded10436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound10463 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound10470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound10496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded10523 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded10530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded10556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard10585 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard10592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard10618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration10647 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration10654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration10680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport10707 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport10714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport10742 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport10754 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__StatemachineInternalType__Alternatives_in_ruleStatemachineInternalType10794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonEventType__Alternatives_in_ruleStatemachineControlButtonEventType10830 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineEvaluationType__Alternatives_in_ruleStatemachineEvaluationType10866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineUserMessageType__Alternatives_in_ruleStatemachineUserMessageType10902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineLineDisplayCursorType__Alternatives_in_ruleStatemachineLineDisplayCursorType10938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineLineDisplayMarqueeType__Alternatives_in_ruleStatemachineLineDisplayMarqueeType10974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineLineDisplayMarqueeFormat__Alternatives_in_ruleStatemachineLineDisplayMarqueeFormat11010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineLineDisplayTextType__Alternatives_in_ruleStatemachineLineDisplayTextType11046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineLineDisplayScrollTextType__Alternatives_in_ruleStatemachineLineDisplayScrollTextType11082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePOSPrinterBarcodeType__Alternatives_in_ruleStatemachinePOSPrinterBarcodeType11118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralBlinkRate_in_rule__StatemachineAction__Alternatives11153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralClear_in_rule__StatemachineAction__Alternatives11170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralCreateWindow_in_rule__StatemachineAction__Alternatives11187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralCursorType_in_rule__StatemachineAction__Alternatives11204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDestroyWindow_in_rule__StatemachineAction__Alternatives11221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDeviceBrightness_in_rule__StatemachineAction__Alternatives11238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayBitmap_in_rule__StatemachineAction__Alternatives11255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayText_in_rule__StatemachineAction__Alternatives11272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralDisplayTextAt_in_rule__StatemachineAction__Alternatives11289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralInterCharacterWait_in_rule__StatemachineAction__Alternatives11306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeFormat_in_rule__StatemachineAction__Alternatives11323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeRepeatWait_in_rule__StatemachineAction__Alternatives11340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeType_in_rule__StatemachineAction__Alternatives11357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralMarqueeUnitWait_in_rule__StatemachineAction__Alternatives11374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralScroll_in_rule__StatemachineAction__Alternatives11391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralOpenDrawer_in_rule__StatemachineAction__Alternatives11408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintBarcode_in_rule__StatemachineAction__Alternatives11425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintBitmap_in_rule__StatemachineAction__Alternatives11442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintCut_in_rule__StatemachineAction__Alternatives11459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintNormal_in_rule__StatemachineAction__Alternatives11476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintRegisterBitmap_in_rule__StatemachineAction__Alternatives11493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTOpen_in_rule__StatemachineAction__Alternatives11510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTClose_in_rule__StatemachineAction__Alternatives11527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTAcknowledge_in_rule__StatemachineAction__Alternatives11544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTReversal_in_rule__StatemachineAction__Alternatives11561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTRegistration_in_rule__StatemachineAction__Alternatives11578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTAuthorization_in_rule__StatemachineAction__Alternatives11595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPrintReport_in_rule__StatemachineAction__Alternatives11612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSet_in_rule__StatemachineAction__Alternatives11629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldRemove_in_rule__StatemachineAction__Alternatives11646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionItemVisible_in_rule__StatemachineAction__Alternatives11663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionItemInvisible_in_rule__StatemachineAction__Alternatives11680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldClear_in_rule__StatemachineAction__Alternatives11697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionButtonCaption_in_rule__StatemachineAction__Alternatives11714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionButtonImage_in_rule__StatemachineAction__Alternatives11731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionDTOFind_in_rule__StatemachineAction__Alternatives11748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorage_in_rule__StatemachineAction__Alternatives11765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionScheduler_in_rule__StatemachineAction__Alternatives11782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineOperation_in_rule__StatemachineAction__Alternatives11799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionConditionalTransition_in_rule__StatemachineAction__Alternatives11816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceString_in_rule__StatemachineActionFieldSource__Alternatives11848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceNumber_in_rule__StatemachineActionFieldSource__Alternatives11865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvaluate_in_rule__StatemachineActionFieldSource__Alternatives11882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceTranslate_in_rule__StatemachineActionFieldSource__Alternatives11899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldGet_in_rule__StatemachineActionFieldSource__Alternatives11916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineFunction_in_rule__StatemachineActionFieldSource__Alternatives11933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorageRetrieve_in_rule__StatemachineActionFieldSource__Alternatives11950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceDtoAttribute_in_rule__StatemachineActionFieldSource__Alternatives11967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvent_in_rule__StatemachineActionFieldSource__Alternatives11984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionPeripheralPTResponse_in_rule__StatemachineActionFieldSource__Alternatives12001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceStringMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceNumberMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceEvaluateMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceTranslateMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldGetMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12101 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_ruleStatemachineOperationMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineStorageRetrieveMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineActionFieldSourceDtoAttributeMore_in_rule__StatemachineActionFieldSourceMore__Alternatives12152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButton_in_rule__StatemachineControl__Alternatives12185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlField_in_rule__StatemachineControl__Alternatives12202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlDTO_in_rule__StatemachineControl__Alternatives12219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlScheduler_in_rule__StatemachineControl__Alternatives12236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlPeripheral_in_rule__StatemachineControl__Alternatives12253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventKeyboard_in_rule__StatemachineControlButtonAttributeEvent__Alternatives12285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventIdentity_in_rule__StatemachineControlButtonAttributeEvent__Alternatives12302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStatemachineControlButtonAttributeEventEvent_in_rule__StatemachineControlButtonAttributeEvent__Alternatives12319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_112351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_112369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives12402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives12420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives12453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives12471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives12503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives12520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives12552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives12570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__OpMultiAssign__Alternatives12604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__OpMultiAssign__Alternatives12624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__OpMultiAssign__Alternatives12644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__OpMultiAssign__Alternatives12664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__OpMultiAssign__Alternatives12684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives12703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives12721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__OpEquality__Alternatives12755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__OpEquality__Alternatives12775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__OpEquality__Alternatives12795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__OpEquality__Alternatives12815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_112849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_112867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__OpCompare__Alternatives12901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives12920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpCompare__Alternatives12939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpCompare__Alternatives12959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__OpOther__Alternatives12994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__OpOther__Alternatives13014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives13033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__OpOther__Alternatives13052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpOther__Alternatives13072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives13091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives13109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpOther__Alternatives13128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__OpOther__Alternatives13148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_113182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Alternatives_5_113201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_113235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Alternatives_6_113254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpOther__Alternatives_6_113274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpAdd__Alternatives13309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpAdd__Alternatives13329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__OpMulti__Alternatives13364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__OpMulti__Alternatives13384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__OpMulti__Alternatives13404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__OpMulti__Alternatives13424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives13458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives13476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__OpUnary__Alternatives13509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpUnary__Alternatives13529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpUnary__Alternatives13549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__OpPostfix__Alternatives13584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpPostfix__Alternatives13604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_113638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_113656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_113690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_113709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_113743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_113762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_113780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_113813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_113831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives13864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives13881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives13898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives13916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives13934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives13951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives13968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives13986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives14004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives14021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives14038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives14055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives14072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives14089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives14106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives14138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives14156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives14174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives14191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives14208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives14225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives14242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives14274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives14291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_214323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_214341 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_314374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_314392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives14425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives14442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_114474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__XVariableDeclaration__Alternatives_114493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_214527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_214545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_114578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_114596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives14629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__FeatureCallID__Alternatives14647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__FeatureCallID__Alternatives14667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__FeatureCallID__Alternatives14687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__FeatureCallID__Alternatives14707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives14741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__IdOrSuper__Alternatives14759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_114793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_114811 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__XBooleanLiteral__Alternatives_114845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_114864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_314897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_314915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives14948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives14965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_014998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_015015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_115047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_115064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives15096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives15114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives15146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives15163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_215195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_215213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_115246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_115264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_115282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_315315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_315333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__StatemachineInternalType__Alternatives15367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__StatemachineInternalType__Alternatives15388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__StatemachineInternalType__Alternatives15409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__StatemachineInternalType__Alternatives15430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__StatemachineInternalType__Alternatives15451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__StatemachineInternalType__Alternatives15472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__StatemachineInternalType__Alternatives15493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__StatemachineControlButtonEventType__Alternatives15529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__StatemachineControlButtonEventType__Alternatives15550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__StatemachineControlButtonEventType__Alternatives15571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__StatemachineEvaluationType__Alternatives15607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__StatemachineEvaluationType__Alternatives15628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__StatemachineEvaluationType__Alternatives15649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__StatemachineEvaluationType__Alternatives15670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__StatemachineEvaluationType__Alternatives15691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__StatemachineEvaluationType__Alternatives15712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__StatemachineEvaluationType__Alternatives15733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__StatemachineEvaluationType__Alternatives15754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__StatemachineEvaluationType__Alternatives15775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__StatemachineEvaluationType__Alternatives15796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__StatemachineEvaluationType__Alternatives15817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__StatemachineEvaluationType__Alternatives15838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__StatemachineEvaluationType__Alternatives15859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__StatemachineEvaluationType__Alternatives15880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__StatemachineUserMessageType__Alternatives15916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__StatemachineUserMessageType__Alternatives15937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__StatemachineUserMessageType__Alternatives15958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__StatemachineUserMessageType__Alternatives15979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__StatemachineUserMessageType__Alternatives16000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__StatemachineLineDisplayCursorType__Alternatives16036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__StatemachineLineDisplayCursorType__Alternatives16057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__StatemachineLineDisplayCursorType__Alternatives16078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__StatemachineLineDisplayCursorType__Alternatives16099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__StatemachineLineDisplayCursorType__Alternatives16120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__StatemachineLineDisplayCursorType__Alternatives16141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__StatemachineLineDisplayCursorType__Alternatives16162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__StatemachineLineDisplayCursorType__Alternatives16183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__StatemachineLineDisplayMarqueeType__Alternatives16324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__StatemachineLineDisplayMarqueeFormat__Alternatives16360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__StatemachineLineDisplayMarqueeFormat__Alternatives16381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__StatemachineLineDisplayTextType__Alternatives16417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__StatemachineLineDisplayTextType__Alternatives16438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__StatemachineLineDisplayTextType__Alternatives16459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__StatemachineLineDisplayTextType__Alternatives16480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__StatemachineLineDisplayScrollTextType__Alternatives16516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__StatemachineLineDisplayScrollTextType__Alternatives16537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__StatemachineLineDisplayScrollTextType__Alternatives16558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__StatemachineLineDisplayScrollTextType__Alternatives16579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16741 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_104_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives16993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_126_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_127_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_128_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_130_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_132_in_rule__StatemachinePOSPrinterBarcodeType__Alternatives17350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__0__Impl_in_rule__StatemachinePackage__Group__017383 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__1_in_rule__StatemachinePackage__Group__017386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__1__Impl_in_rule__StatemachinePackage__Group__117444 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__2_in_rule__StatemachinePackage__Group__117447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_133_in_rule__StatemachinePackage__Group__1__Impl17475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__2__Impl_in_rule__StatemachinePackage__Group__217506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__3_in_rule__StatemachinePackage__Group__217509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__NameAssignment_2_in_rule__StatemachinePackage__Group__2__Impl17536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group__3__Impl_in_rule__StatemachinePackage__Group__317566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__0_in_rule__StatemachinePackage__Group__3__Impl17593 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__0__Impl_in_rule__StatemachinePackage__Group_3__017632 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__1_in_rule__StatemachinePackage__Group_3__017635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachinePackage__Group_3__0__Impl17663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__1__Impl_in_rule__StatemachinePackage__Group_3__117694 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__2_in_rule__StatemachinePackage__Group_3__117697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__ImportsAssignment_3_1_in_rule__StatemachinePackage__Group_3__1__Impl17724 = new BitSet(new long[]{0x0000800000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__2__Impl_in_rule__StatemachinePackage__Group_3__217755 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__3_in_rule__StatemachinePackage__Group_3__217758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__StatemachinesAssignment_3_2_in_rule__StatemachinePackage__Group_3__2__Impl17785 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachinePackage__Group_3__3__Impl_in_rule__StatemachinePackage__Group_3__317816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachinePackage__Group_3__3__Impl17844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__0__Impl_in_rule__Statemachine__Group__017883 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__1_in_rule__Statemachine__Group__017886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_136_in_rule__Statemachine__Group__0__Impl17914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__1__Impl_in_rule__Statemachine__Group__117945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000A00L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__2_in_rule__Statemachine__Group__117948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__NameAssignment_1_in_rule__Statemachine__Group__1__Impl17975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__2__Impl_in_rule__Statemachine__Group__218005 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000A00L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__3_in_rule__Statemachine__Group__218008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_2__0_in_rule__Statemachine__Group__2__Impl18035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__3__Impl_in_rule__Statemachine__Group__318066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000A00L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__4_in_rule__Statemachine__Group__318069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_3__0_in_rule__Statemachine__Group__3__Impl18096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__4__Impl_in_rule__Statemachine__Group__418127 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__5_in_rule__Statemachine__Group__418130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_137_in_rule__Statemachine__Group__4__Impl18158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__5__Impl_in_rule__Statemachine__Group__518189 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__6_in_rule__Statemachine__Group__518192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__InitialStateAssignment_5_in_rule__Statemachine__Group__5__Impl18219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__6__Impl_in_rule__Statemachine__Group__618249 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__7_in_rule__Statemachine__Group__618252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_138_in_rule__Statemachine__Group__6__Impl18280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__7__Impl_in_rule__Statemachine__Group__718311 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__8_in_rule__Statemachine__Group__718314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__InitialEventAssignment_7_in_rule__Statemachine__Group__7__Impl18341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__8__Impl_in_rule__Statemachine__Group__818371 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__9_in_rule__Statemachine__Group__818374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8__0_in_rule__Statemachine__Group__8__Impl18401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__9__Impl_in_rule__Statemachine__Group__918431 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__10_in_rule__Statemachine__Group__918434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__0_in_rule__Statemachine__Group__9__Impl18461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group__10__Impl_in_rule__Statemachine__Group__1018491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__0_in_rule__Statemachine__Group__10__Impl18518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_2__0__Impl_in_rule__Statemachine__Group_2__018570 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_2__1_in_rule__Statemachine__Group_2__018573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__DescriptionAssignment_2_0_in_rule__Statemachine__Group_2__0__Impl18600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_2__1__Impl_in_rule__Statemachine__Group_2__118630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__DescriptionValueAssignment_2_1_in_rule__Statemachine__Group_2__1__Impl18657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_3__0__Impl_in_rule__Statemachine__Group_3__018691 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_3__1_in_rule__Statemachine__Group_3__018694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__Statemachine__Group_3__0__Impl18722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_3__1__Impl_in_rule__Statemachine__Group_3__118753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__FunctionGroupAssignment_3_1_in_rule__Statemachine__Group_3__1__Impl18780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8__0__Impl_in_rule__Statemachine__Group_8__018814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8__1_in_rule__Statemachine__Group_8__018817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__Statemachine__Group_8__0__Impl18845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8__1__Impl_in_rule__Statemachine__Group_8__118876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__0_in_rule__Statemachine__Group_8__1__Impl18903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__0__Impl_in_rule__Statemachine__Group_8_1__018937 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__1_in_rule__Statemachine__Group_8_1__018940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__Statemachine__Group_8_1__0__Impl18968 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets009 {
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__1__Impl_in_rule__Statemachine__Group_8_1__118999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__2_in_rule__Statemachine__Group_8_1__119002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__EventsAssignment_8_1_1_in_rule__Statemachine__Group_8_1__1__Impl19029 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_8_1__2__Impl_in_rule__Statemachine__Group_8_1__219060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__Statemachine__Group_8_1__2__Impl19088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__0__Impl_in_rule__Statemachine__Group_9__019125 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__1_in_rule__Statemachine__Group_9__019128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_141_in_rule__Statemachine__Group_9__0__Impl19156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__1__Impl_in_rule__Statemachine__Group_9__119187 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x00000043C0000000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__2_in_rule__Statemachine__Group_9__119190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__Statemachine__Group_9__1__Impl19218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__2__Impl_in_rule__Statemachine__Group_9__219249 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x00000043C0000000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__3_in_rule__Statemachine__Group_9__219252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__ControlsAssignment_9_2_in_rule__Statemachine__Group_9__2__Impl19279 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x00000043C0000000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_9__3__Impl_in_rule__Statemachine__Group_9__319310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__Statemachine__Group_9__3__Impl19338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__0__Impl_in_rule__Statemachine__Group_10__019377 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__1_in_rule__Statemachine__Group_10__019380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_142_in_rule__Statemachine__Group_10__0__Impl19408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__1__Impl_in_rule__Statemachine__Group_10__119439 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__2_in_rule__Statemachine__Group_10__119442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__Statemachine__Group_10__1__Impl19470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__2__Impl_in_rule__Statemachine__Group_10__219501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010080L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__3_in_rule__Statemachine__Group_10__219504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Statemachine__StatesAssignment_10_2_in_rule__Statemachine__Group_10__2__Impl19531 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__Statemachine__Group_10__3__Impl_in_rule__Statemachine__Group_10__319562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__Statemachine__Group_10__3__Impl19590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineEvent__Group__0__Impl_in_rule__StatemachineEvent__Group__019629 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineEvent__Group__1_in_rule__StatemachineEvent__Group__019632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__StatemachineEvent__Group__0__Impl19660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineEvent__Group__1__Impl_in_rule__StatemachineEvent__Group__119691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineEvent__NameAssignment_1_in_rule__StatemachineEvent__Group__1__Impl19718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__0__Impl_in_rule__StatemachineState__Group__019752 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__1_in_rule__StatemachineState__Group__019755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_rule__StatemachineState__Group__0__Impl19783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__1__Impl_in_rule__StatemachineState__Group__119814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__2_in_rule__StatemachineState__Group__119817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__NameAssignment_1_in_rule__StatemachineState__Group__1__Impl19844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__2__Impl_in_rule__StatemachineState__Group__219874 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000000L,0x0000000000060000L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__3_in_rule__StatemachineState__Group__219877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineState__Group__2__Impl19905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__3__Impl_in_rule__StatemachineState__Group__319936 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__4_in_rule__StatemachineState__Group__319939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__UnorderedGroup_3_in_rule__StatemachineState__Group__3__Impl19966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group__4__Impl_in_rule__StatemachineState__Group__419996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineState__Group__4__Impl20024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__0__Impl_in_rule__StatemachineState__Group_3_0__020065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__1_in_rule__StatemachineState__Group_3_0__020068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_rule__StatemachineState__Group_3_0__0__Impl20096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__1__Impl_in_rule__StatemachineState__Group_3_0__120127 = new BitSet(new long[]{0x0800000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__2_in_rule__StatemachineState__Group_3_0__120130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineState__Group_3_0__1__Impl20158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__2__Impl_in_rule__StatemachineState__Group_3_0__220189 = new BitSet(new long[]{0x0800000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__3_in_rule__StatemachineState__Group_3_0__220192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__TriggersAssignment_3_0_2_in_rule__StatemachineState__Group_3_0__2__Impl20219 = new BitSet(new long[]{0x0800000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_0__3__Impl_in_rule__StatemachineState__Group_3_0__320250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineState__Group_3_0__3__Impl20278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_1__0__Impl_in_rule__StatemachineState__Group_3_1__020317 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_1__1_in_rule__StatemachineState__Group_3_1__020320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__StatemachineState__Group_3_1__0__Impl20348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_1__1__Impl_in_rule__StatemachineState__Group_3_1__120379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__IdentityAssignment_3_1_1_in_rule__StatemachineState__Group_3_1__1__Impl20406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__0__Impl_in_rule__StatemachineState__Group_3_2__020440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__1_in_rule__StatemachineState__Group_3_2__020443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_rule__StatemachineState__Group_3_2__0__Impl20471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__1__Impl_in_rule__StatemachineState__Group_3_2__120502 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__2_in_rule__StatemachineState__Group_3_2__120505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineState__Group_3_2__1__Impl20533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__2__Impl_in_rule__StatemachineState__Group_3_2__220564 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__3_in_rule__StatemachineState__Group_3_2__220567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__KeystrokeAssignment_3_2_2_in_rule__StatemachineState__Group_3_2__2__Impl20594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2__3__Impl_in_rule__StatemachineState__Group_3_2__320624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2_3__0_in_rule__StatemachineState__Group_3_2__3__Impl20651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2_3__0__Impl_in_rule__StatemachineState__Group_3_2_3__020690 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2_3__1_in_rule__StatemachineState__Group_3_2_3__020693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__HasKeyOperationAssignment_3_2_3_0_in_rule__StatemachineState__Group_3_2_3__0__Impl20720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__Group_3_2_3__1__Impl_in_rule__StatemachineState__Group_3_2_3__120750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineState__KeyOperationAssignment_3_2_3_1_in_rule__StatemachineState__Group_3_2_3__1__Impl20777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__0__Impl_in_rule__StatemachineTrigger__Group__020811 = new BitSet(new long[]{0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__1_in_rule__StatemachineTrigger__Group__020814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__1__Impl_in_rule__StatemachineTrigger__Group__120872 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__2_in_rule__StatemachineTrigger__Group__120875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__StatemachineTrigger__Group__1__Impl20903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__2__Impl_in_rule__StatemachineTrigger__Group__220934 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__3_in_rule__StatemachineTrigger__Group__220937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__TriggersAssignment_2_in_rule__StatemachineTrigger__Group__2__Impl20964 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__3__Impl_in_rule__StatemachineTrigger__Group__320995 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__4_in_rule__StatemachineTrigger__Group__320998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__0_in_rule__StatemachineTrigger__Group__3__Impl21025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__4__Impl_in_rule__StatemachineTrigger__Group__421056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__5_in_rule__StatemachineTrigger__Group__421059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_148_in_rule__StatemachineTrigger__Group__4__Impl21087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__5__Impl_in_rule__StatemachineTrigger__Group__521118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__6_in_rule__StatemachineTrigger__Group__521121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_5__0_in_rule__StatemachineTrigger__Group__5__Impl21148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__6__Impl_in_rule__StatemachineTrigger__Group__621179 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4E5E7FD781C00080L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__7_in_rule__StatemachineTrigger__Group__621182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineTrigger__Group__6__Impl21210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__7__Impl_in_rule__StatemachineTrigger__Group__721241 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4E5E7FD781C00080L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__8_in_rule__StatemachineTrigger__Group__721244 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets010 {
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__ActionsAssignment_7_in_rule__StatemachineTrigger__Group__7__Impl21271 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x4E5E7FD781C00000L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group__8__Impl_in_rule__StatemachineTrigger__Group__821302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineTrigger__Group__8__Impl21330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__0__Impl_in_rule__StatemachineTrigger__Group_3__021379 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__1_in_rule__StatemachineTrigger__Group_3__021382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_149_in_rule__StatemachineTrigger__Group_3__0__Impl21410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__1__Impl_in_rule__StatemachineTrigger__Group_3__121441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__2_in_rule__StatemachineTrigger__Group_3__121444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineTrigger__Group_3__1__Impl21472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__2__Impl_in_rule__StatemachineTrigger__Group_3__221503 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__3_in_rule__StatemachineTrigger__Group_3__221506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__GuardsAssignment_3_2_in_rule__StatemachineTrigger__Group_3__2__Impl21533 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_3__3__Impl_in_rule__StatemachineTrigger__Group_3__321564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineTrigger__Group_3__3__Impl21592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_5__0__Impl_in_rule__StatemachineTrigger__Group_5__021631 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_5__1_in_rule__StatemachineTrigger__Group_5__021634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__HasTransitionAssignment_5_0_in_rule__StatemachineTrigger__Group_5__0__Impl21661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__Group_5__1__Impl_in_rule__StatemachineTrigger__Group_5__121691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineTrigger__TransitionAssignment_5_1_in_rule__StatemachineTrigger__Group_5__1__Impl21718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__0__Impl_in_rule__StatemachineActionPeripheralBlinkRate__Group__021752 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__1_in_rule__StatemachineActionPeripheralBlinkRate__Group__021755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_150_in_rule__StatemachineActionPeripheralBlinkRate__Group__0__Impl21783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__1__Impl_in_rule__StatemachineActionPeripheralBlinkRate__Group__121814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__2_in_rule__StatemachineActionPeripheralBlinkRate__Group__121817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__BlinkRateAssignment_1_in_rule__StatemachineActionPeripheralBlinkRate__Group__1__Impl21844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__2__Impl_in_rule__StatemachineActionPeripheralBlinkRate__Group__221874 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__3_in_rule__StatemachineActionPeripheralBlinkRate__Group__221877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralBlinkRate__Group__2__Impl21905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__Group__3__Impl_in_rule__StatemachineActionPeripheralBlinkRate__Group__321936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralBlinkRate__DeviceAssignment_3_in_rule__StatemachineActionPeripheralBlinkRate__Group__3__Impl21963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralClear__Group__0__Impl_in_rule__StatemachineActionPeripheralClear__Group__022001 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralClear__Group__1_in_rule__StatemachineActionPeripheralClear__Group__022004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_151_in_rule__StatemachineActionPeripheralClear__Group__0__Impl22032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralClear__Group__1__Impl_in_rule__StatemachineActionPeripheralClear__Group__122063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralClear__DeviceAssignment_1_in_rule__StatemachineActionPeripheralClear__Group__1__Impl22090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__0__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__022124 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__1_in_rule__StatemachineActionPeripheralCreateWindow__Group__022127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_rule__StatemachineActionPeripheralCreateWindow__Group__0__Impl22155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__1__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__122186 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__2_in_rule__StatemachineActionPeripheralCreateWindow__Group__122189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_rule__StatemachineActionPeripheralCreateWindow__Group__1__Impl22217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__2__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__222248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__3_in_rule__StatemachineActionPeripheralCreateWindow__Group__222251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__ViewportRowAssignment_2_in_rule__StatemachineActionPeripheralCreateWindow__Group__2__Impl22278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__3__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__322308 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__4_in_rule__StatemachineActionPeripheralCreateWindow__Group__322311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__StatemachineActionPeripheralCreateWindow__Group__3__Impl22339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__4__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__422370 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__5_in_rule__StatemachineActionPeripheralCreateWindow__Group__422373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__ViewportColumnAssignment_4_in_rule__StatemachineActionPeripheralCreateWindow__Group__4__Impl22400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__5__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__522430 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__6_in_rule__StatemachineActionPeripheralCreateWindow__Group__522433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_155_in_rule__StatemachineActionPeripheralCreateWindow__Group__5__Impl22461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__6__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__622492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__7_in_rule__StatemachineActionPeripheralCreateWindow__Group__622495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__ViewportHeightAssignment_6_in_rule__StatemachineActionPeripheralCreateWindow__Group__6__Impl22522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__7__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__722552 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__8_in_rule__StatemachineActionPeripheralCreateWindow__Group__722555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_156_in_rule__StatemachineActionPeripheralCreateWindow__Group__7__Impl22583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__8__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__822614 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__9_in_rule__StatemachineActionPeripheralCreateWindow__Group__822617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__ViewportWidthAssignment_8_in_rule__StatemachineActionPeripheralCreateWindow__Group__8__Impl22644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__9__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__922674 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__10_in_rule__StatemachineActionPeripheralCreateWindow__Group__922677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__StatemachineActionPeripheralCreateWindow__Group__9__Impl22705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__10__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__1022736 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__11_in_rule__StatemachineActionPeripheralCreateWindow__Group__1022739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__WindowHeightAssignment_10_in_rule__StatemachineActionPeripheralCreateWindow__Group__10__Impl22766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__11__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__1122796 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__12_in_rule__StatemachineActionPeripheralCreateWindow__Group__1122799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_158_in_rule__StatemachineActionPeripheralCreateWindow__Group__11__Impl22827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__12__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__1222858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__13_in_rule__StatemachineActionPeripheralCreateWindow__Group__1222861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__WindowWidthAssignment_12_in_rule__StatemachineActionPeripheralCreateWindow__Group__12__Impl22888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__13__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__1322918 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__14_in_rule__StatemachineActionPeripheralCreateWindow__Group__1322921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralCreateWindow__Group__13__Impl22949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__Group__14__Impl_in_rule__StatemachineActionPeripheralCreateWindow__Group__1422980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCreateWindow__DeviceAssignment_14_in_rule__StatemachineActionPeripheralCreateWindow__Group__14__Impl23007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__0__Impl_in_rule__StatemachineActionPeripheralCursorType__Group__023067 = new BitSet(new long[]{0x0000000000000000L,0x0000000000FF0000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__1_in_rule__StatemachineActionPeripheralCursorType__Group__023070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_rule__StatemachineActionPeripheralCursorType__Group__0__Impl23098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__1__Impl_in_rule__StatemachineActionPeripheralCursorType__Group__123129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__2_in_rule__StatemachineActionPeripheralCursorType__Group__123132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__CursorTypeAssignment_1_in_rule__StatemachineActionPeripheralCursorType__Group__1__Impl23159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__2__Impl_in_rule__StatemachineActionPeripheralCursorType__Group__223189 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__3_in_rule__StatemachineActionPeripheralCursorType__Group__223192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralCursorType__Group__2__Impl23220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__Group__3__Impl_in_rule__StatemachineActionPeripheralCursorType__Group__323251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralCursorType__DeviceAssignment_3_in_rule__StatemachineActionPeripheralCursorType__Group__3__Impl23278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDestroyWindow__Group__0__Impl_in_rule__StatemachineActionPeripheralDestroyWindow__Group__023316 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDestroyWindow__Group__1_in_rule__StatemachineActionPeripheralDestroyWindow__Group__023319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__StatemachineActionPeripheralDestroyWindow__Group__0__Impl23347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDestroyWindow__Group__1__Impl_in_rule__StatemachineActionPeripheralDestroyWindow__Group__123378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDestroyWindow__DeviceAssignment_1_in_rule__StatemachineActionPeripheralDestroyWindow__Group__1__Impl23405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__0__Impl_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__023439 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__1_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__023442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_161_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__0__Impl23470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__1__Impl_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__123501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__2_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__123504 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets011 {
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__BrightnessAssignment_1_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__1__Impl23531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__2__Impl_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__223561 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__3_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__223564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__2__Impl23592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__Group__3__Impl_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__323623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDeviceBrightness__DeviceAssignment_3_in_rule__StatemachineActionPeripheralDeviceBrightness__Group__3__Impl23650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__0__Impl_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__023688 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__1_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__023691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_162_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__0__Impl23719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__1__Impl_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__123750 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__2_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__123753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__1__Impl23781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__2__Impl_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__223812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__3_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__223815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__BitmapIdAssignment_2_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__2__Impl23842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__3__Impl_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__323872 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__4_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__323875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__3__Impl23903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__Group__4__Impl_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__423934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayBitmap__DeviceAssignment_4_in_rule__StatemachineActionPeripheralDisplayBitmap__Group__4__Impl23961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__0__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__024001 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__1_in_rule__StatemachineActionPeripheralDisplayText__Group__024004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_164_in_rule__StatemachineActionPeripheralDisplayText__Group__0__Impl24032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__1__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__124063 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__2_in_rule__StatemachineActionPeripheralDisplayText__Group__124066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rule__StatemachineActionPeripheralDisplayText__Group__1__Impl24094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__2__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__224125 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__3_in_rule__StatemachineActionPeripheralDisplayText__Group__224128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__TextAssignment_2_in_rule__StatemachineActionPeripheralDisplayText__Group__2__Impl24155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__3__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__324185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__4_in_rule__StatemachineActionPeripheralDisplayText__Group__324188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group_3__0_in_rule__StatemachineActionPeripheralDisplayText__Group__3__Impl24215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__4__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__424246 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__5_in_rule__StatemachineActionPeripheralDisplayText__Group__424249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralDisplayText__Group__4__Impl24277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group__5__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group__524308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__DeviceAssignment_5_in_rule__StatemachineActionPeripheralDisplayText__Group__5__Impl24335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group_3__0__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group_3__024377 = new BitSet(new long[]{0x0000000000000000L,0x0000000180A00000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group_3__1_in_rule__StatemachineActionPeripheralDisplayText__Group_3__024380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__HasTypeAssignment_3_0_in_rule__StatemachineActionPeripheralDisplayText__Group_3__0__Impl24407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__Group_3__1__Impl_in_rule__StatemachineActionPeripheralDisplayText__Group_3__124437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayText__TextTypeAssignment_3_1_in_rule__StatemachineActionPeripheralDisplayText__Group_3__1__Impl24464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__0__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__024498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__1_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__024501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_166_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__0__Impl24529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__1__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__124560 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__2_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__124563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__1__Impl24591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__2__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__224622 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__3_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__224625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__TextAssignment_2_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__2__Impl24652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__3__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__324682 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__4_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__324685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__3__Impl24713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__4__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__424744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__5_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__424747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__RowAssignment_4_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__4__Impl24774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__5__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__524804 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__6_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__524807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__5__Impl24835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__6__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__624866 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__7_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__624869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__ColumnAssignment_6_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__6__Impl24896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__7__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__724926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__8_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__724929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__7__Impl24956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__8__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__824987 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__9_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__824990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__8__Impl25018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group__9__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__925049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__DeviceAssignment_9_in_rule__StatemachineActionPeripheralDisplayTextAt__Group__9__Impl25076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__025126 = new BitSet(new long[]{0x0000000000000000L,0x0000000180A00000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__1_in_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__025129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__HasTypeAssignment_7_0_in_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__0__Impl25156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__1__Impl_in_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__125186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralDisplayTextAt__TextTypeAssignment_7_1_in_rule__StatemachineActionPeripheralDisplayTextAt__Group_7__1__Impl25213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__0__Impl_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__025247 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__1_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__025250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_167_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__0__Impl25278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__1__Impl_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__125309 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__2_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__125312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__WaitAssignment_1_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__1__Impl25339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__2__Impl_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__225369 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__3_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__225372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__2__Impl25400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__Group__3__Impl_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__325431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralInterCharacterWait__DeviceAssignment_3_in_rule__StatemachineActionPeripheralInterCharacterWait__Group__3__Impl25458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__0__Impl_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__025496 = new BitSet(new long[]{0x0000000000000000L,0x0000000060000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__1_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__025499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_168_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__0__Impl25527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__1__Impl_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__125558 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__2_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__125561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__FormatAssignment_1_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__1__Impl25588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__2__Impl_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__225618 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__3_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__225621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__2__Impl25649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__Group__3__Impl_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__325680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeFormat__DeviceAssignment_3_in_rule__StatemachineActionPeripheralMarqueeFormat__Group__3__Impl25707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0__Impl_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__025745 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__1_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__025748 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets012 {
+        public static final BitSet FOLLOW_169_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__0__Impl25776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__1__Impl_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__125807 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__2_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__125810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__WaitAssignment_1_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__1__Impl25837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__2__Impl_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__225867 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__3_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__225870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__2__Impl25898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__3__Impl_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__325929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeRepeatWait__DeviceAssignment_3_in_rule__StatemachineActionPeripheralMarqueeRepeatWait__Group__3__Impl25956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__0__Impl_in_rule__StatemachineActionPeripheralMarqueeType__Group__025994 = new BitSet(new long[]{0x0000000000000000L,0x000000001F010000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__1_in_rule__StatemachineActionPeripheralMarqueeType__Group__025997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_170_in_rule__StatemachineActionPeripheralMarqueeType__Group__0__Impl26025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__1__Impl_in_rule__StatemachineActionPeripheralMarqueeType__Group__126056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__2_in_rule__StatemachineActionPeripheralMarqueeType__Group__126059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__MarqueeTypeAssignment_1_in_rule__StatemachineActionPeripheralMarqueeType__Group__1__Impl26086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__2__Impl_in_rule__StatemachineActionPeripheralMarqueeType__Group__226116 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__3_in_rule__StatemachineActionPeripheralMarqueeType__Group__226119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralMarqueeType__Group__2__Impl26147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__Group__3__Impl_in_rule__StatemachineActionPeripheralMarqueeType__Group__326178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeType__DeviceAssignment_3_in_rule__StatemachineActionPeripheralMarqueeType__Group__3__Impl26205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0__Impl_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__026243 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__1_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__026246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_171_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__0__Impl26274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__1__Impl_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__126305 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__2_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__126308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__WaitAssignment_1_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__1__Impl26335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__2__Impl_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__226365 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__3_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__226368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__2__Impl26396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__3__Impl_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__326427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralMarqueeUnitWait__DeviceAssignment_3_in_rule__StatemachineActionPeripheralMarqueeUnitWait__Group__3__Impl26454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__0__Impl_in_rule__StatemachineActionPeripheralScroll__Group__026492 = new BitSet(new long[]{0x0000000000000000L,0x000000000F000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__1_in_rule__StatemachineActionPeripheralScroll__Group__026495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_172_in_rule__StatemachineActionPeripheralScroll__Group__0__Impl26523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__1__Impl_in_rule__StatemachineActionPeripheralScroll__Group__126554 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__2_in_rule__StatemachineActionPeripheralScroll__Group__126557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__DirectionAssignment_1_in_rule__StatemachineActionPeripheralScroll__Group__1__Impl26584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__2__Impl_in_rule__StatemachineActionPeripheralScroll__Group__226614 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__3_in_rule__StatemachineActionPeripheralScroll__Group__226617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__UnitsAssignment_2_in_rule__StatemachineActionPeripheralScroll__Group__2__Impl26644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__3__Impl_in_rule__StatemachineActionPeripheralScroll__Group__326674 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__4_in_rule__StatemachineActionPeripheralScroll__Group__326677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralScroll__Group__3__Impl26705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__Group__4__Impl_in_rule__StatemachineActionPeripheralScroll__Group__426736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralScroll__DeviceAssignment_4_in_rule__StatemachineActionPeripheralScroll__Group__4__Impl26763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralOpenDrawer__Group__0__Impl_in_rule__StatemachineActionPeripheralOpenDrawer__Group__026803 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralOpenDrawer__Group__1_in_rule__StatemachineActionPeripheralOpenDrawer__Group__026806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__StatemachineActionPeripheralOpenDrawer__Group__0__Impl26834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralOpenDrawer__Group__1__Impl_in_rule__StatemachineActionPeripheralOpenDrawer__Group__126865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralOpenDrawer__DeviceAssignment_1_in_rule__StatemachineActionPeripheralOpenDrawer__Group__1__Impl26892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__026926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__1_in_rule__StatemachineActionPeripheralPrintBarcode__Group__026929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__StatemachineActionPeripheralPrintBarcode__Group__0__Impl26957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__126988 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__2_in_rule__StatemachineActionPeripheralPrintBarcode__Group__126991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_175_in_rule__StatemachineActionPeripheralPrintBarcode__Group__1__Impl27019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__227050 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__3_in_rule__StatemachineActionPeripheralPrintBarcode__Group__227053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__DataAssignment_2_in_rule__StatemachineActionPeripheralPrintBarcode__Group__2__Impl27080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__3__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__327110 = new BitSet(new long[]{0x0000000000000000L,0xFFFFFFFE00000000L,0x000000000000001FL});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__4_in_rule__StatemachineActionPeripheralPrintBarcode__Group__327113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__StatemachineActionPeripheralPrintBarcode__Group__3__Impl27141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__4__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__427172 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__5_in_rule__StatemachineActionPeripheralPrintBarcode__Group__427175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__BarcodeTypeAssignment_4_in_rule__StatemachineActionPeripheralPrintBarcode__Group__4__Impl27202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__5__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__527232 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__6_in_rule__StatemachineActionPeripheralPrintBarcode__Group__527235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPrintBarcode__Group__5__Impl27263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__Group__6__Impl_in_rule__StatemachineActionPeripheralPrintBarcode__Group__627294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBarcode__DeviceAssignment_6_in_rule__StatemachineActionPeripheralPrintBarcode__Group__6__Impl27321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintBitmap__Group__027365 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__1_in_rule__StatemachineActionPeripheralPrintBitmap__Group__027368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_177_in_rule__StatemachineActionPeripheralPrintBitmap__Group__0__Impl27396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintBitmap__Group__127427 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__2_in_rule__StatemachineActionPeripheralPrintBitmap__Group__127430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rule__StatemachineActionPeripheralPrintBitmap__Group__1__Impl27458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintBitmap__Group__227489 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__3_in_rule__StatemachineActionPeripheralPrintBitmap__Group__227492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__BitmapIdAssignment_2_in_rule__StatemachineActionPeripheralPrintBitmap__Group__2__Impl27519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__3__Impl_in_rule__StatemachineActionPeripheralPrintBitmap__Group__327549 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__4_in_rule__StatemachineActionPeripheralPrintBitmap__Group__327552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPrintBitmap__Group__3__Impl27580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__Group__4__Impl_in_rule__StatemachineActionPeripheralPrintBitmap__Group__427611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintBitmap__DeviceAssignment_4_in_rule__StatemachineActionPeripheralPrintBitmap__Group__4__Impl27638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintCut__Group__027678 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__1_in_rule__StatemachineActionPeripheralPrintCut__Group__027681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_178_in_rule__StatemachineActionPeripheralPrintCut__Group__0__Impl27709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintCut__Group__127740 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__2_in_rule__StatemachineActionPeripheralPrintCut__Group__127743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rule__StatemachineActionPeripheralPrintCut__Group__1__Impl27771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintCut__Group__227802 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__3_in_rule__StatemachineActionPeripheralPrintCut__Group__227805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__TextAssignment_2_in_rule__StatemachineActionPeripheralPrintCut__Group__2__Impl27832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__3__Impl_in_rule__StatemachineActionPeripheralPrintCut__Group__327862 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__4_in_rule__StatemachineActionPeripheralPrintCut__Group__327865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPrintCut__Group__3__Impl27893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__Group__4__Impl_in_rule__StatemachineActionPeripheralPrintCut__Group__427924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintCut__DeviceAssignment_4_in_rule__StatemachineActionPeripheralPrintCut__Group__4__Impl27951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintNormal__Group__027991 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__1_in_rule__StatemachineActionPeripheralPrintNormal__Group__027994 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets013 {
+        public static final BitSet FOLLOW_179_in_rule__StatemachineActionPeripheralPrintNormal__Group__0__Impl28022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintNormal__Group__128053 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__2_in_rule__StatemachineActionPeripheralPrintNormal__Group__128056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rule__StatemachineActionPeripheralPrintNormal__Group__1__Impl28084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintNormal__Group__228115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__3_in_rule__StatemachineActionPeripheralPrintNormal__Group__228118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__TextAssignment_2_in_rule__StatemachineActionPeripheralPrintNormal__Group__2__Impl28145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__3__Impl_in_rule__StatemachineActionPeripheralPrintNormal__Group__328175 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__4_in_rule__StatemachineActionPeripheralPrintNormal__Group__328178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPrintNormal__Group__3__Impl28206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__Group__4__Impl_in_rule__StatemachineActionPeripheralPrintNormal__Group__428237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintNormal__DeviceAssignment_4_in_rule__StatemachineActionPeripheralPrintNormal__Group__4__Impl28264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__028304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__1_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__028307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_180_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__0__Impl28335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__128366 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__2_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__128369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__1__Impl28397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__228428 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__3_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__228431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__BitmapIdAssignment_2_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__2__Impl28458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__3__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__328488 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__4_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__328491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_181_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__3__Impl28519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__4__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__428550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__5_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__428553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__NameAssignment_4_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__4__Impl28580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__5__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__528610 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__6_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__528613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__5__Impl28641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__6__Impl_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__628672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintRegisterBitmap__DeviceAssignment_6_in_rule__StatemachineActionPeripheralPrintRegisterBitmap__Group__6__Impl28699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__0__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__028743 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__1_in_rule__StatemachineActionPeripheralPTOpen__Group__028746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_182_in_rule__StatemachineActionPeripheralPTOpen__Group__0__Impl28774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__1__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__128805 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__2_in_rule__StatemachineActionPeripheralPTOpen__Group__128808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__StatemachineActionPeripheralPTOpen__Group__1__Impl28836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__2__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__228867 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__3_in_rule__StatemachineActionPeripheralPTOpen__Group__228870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__HostAssignment_2_in_rule__StatemachineActionPeripheralPTOpen__Group__2__Impl28897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__3__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__328927 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__4_in_rule__StatemachineActionPeripheralPTOpen__Group__328930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_184_in_rule__StatemachineActionPeripheralPTOpen__Group__3__Impl28958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__4__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__428989 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__5_in_rule__StatemachineActionPeripheralPTOpen__Group__428992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__PortAssignment_4_in_rule__StatemachineActionPeripheralPTOpen__Group__4__Impl29019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__5__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__529049 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__6_in_rule__StatemachineActionPeripheralPTOpen__Group__529052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTOpen__Group__5__Impl29080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__Group__6__Impl_in_rule__StatemachineActionPeripheralPTOpen__Group__629111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTOpen__DeviceAssignment_6_in_rule__StatemachineActionPeripheralPTOpen__Group__6__Impl29138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__0__Impl_in_rule__StatemachineActionPeripheralPTClose__Group__029182 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__1_in_rule__StatemachineActionPeripheralPTClose__Group__029185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_185_in_rule__StatemachineActionPeripheralPTClose__Group__0__Impl29213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__1__Impl_in_rule__StatemachineActionPeripheralPTClose__Group__129244 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__2_in_rule__StatemachineActionPeripheralPTClose__Group__129247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTClose__Group__1__Impl29275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__Group__2__Impl_in_rule__StatemachineActionPeripheralPTClose__Group__229306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTClose__DeviceAssignment_2_in_rule__StatemachineActionPeripheralPTClose__Group__2__Impl29333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__0__Impl_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__029369 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__1_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__029372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_186_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__0__Impl29400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__1__Impl_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__129431 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__2_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__129434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__1__Impl29462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__Group__2__Impl_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__229493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAcknowledge__DeviceAssignment_2_in_rule__StatemachineActionPeripheralPTAcknowledge__Group__2__Impl29520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__0__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__029556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__1_in_rule__StatemachineActionPeripheralPTReversal__Group__029559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_187_in_rule__StatemachineActionPeripheralPTReversal__Group__0__Impl29587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__1__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__129618 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__2_in_rule__StatemachineActionPeripheralPTReversal__Group__129621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_188_in_rule__StatemachineActionPeripheralPTReversal__Group__1__Impl29649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__2__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__229680 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__3_in_rule__StatemachineActionPeripheralPTReversal__Group__229683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__PasswordAssignment_2_in_rule__StatemachineActionPeripheralPTReversal__Group__2__Impl29710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__3__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__329740 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__4_in_rule__StatemachineActionPeripheralPTReversal__Group__329743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_189_in_rule__StatemachineActionPeripheralPTReversal__Group__3__Impl29771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__4__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__429802 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__5_in_rule__StatemachineActionPeripheralPTReversal__Group__429805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__ReceiptAssignment_4_in_rule__StatemachineActionPeripheralPTReversal__Group__4__Impl29832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__5__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__529862 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__6_in_rule__StatemachineActionPeripheralPTReversal__Group__529865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTReversal__Group__5__Impl29893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__Group__6__Impl_in_rule__StatemachineActionPeripheralPTReversal__Group__629924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTReversal__DeviceAssignment_6_in_rule__StatemachineActionPeripheralPTReversal__Group__6__Impl29951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__0__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__029995 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__1_in_rule__StatemachineActionPeripheralPTRegistration__Group__029998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_190_in_rule__StatemachineActionPeripheralPTRegistration__Group__0__Impl30026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__1__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__130057 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__2_in_rule__StatemachineActionPeripheralPTRegistration__Group__130060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_188_in_rule__StatemachineActionPeripheralPTRegistration__Group__1__Impl30088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__2__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__230119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__3_in_rule__StatemachineActionPeripheralPTRegistration__Group__230122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__PasswordAssignment_2_in_rule__StatemachineActionPeripheralPTRegistration__Group__2__Impl30149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__3__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__330179 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__4_in_rule__StatemachineActionPeripheralPTRegistration__Group__330182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_191_in_rule__StatemachineActionPeripheralPTRegistration__Group__3__Impl30210 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets014 {
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__4__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__430241 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__5_in_rule__StatemachineActionPeripheralPTRegistration__Group__430244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__ConfigurationAssignment_4_in_rule__StatemachineActionPeripheralPTRegistration__Group__4__Impl30271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__5__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__530301 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__6_in_rule__StatemachineActionPeripheralPTRegistration__Group__530304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTRegistration__Group__5__Impl30332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__Group__6__Impl_in_rule__StatemachineActionPeripheralPTRegistration__Group__630363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTRegistration__DeviceAssignment_6_in_rule__StatemachineActionPeripheralPTRegistration__Group__6__Impl30390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__0__Impl_in_rule__StatemachineActionPeripheralPTAuthorization__Group__030434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__1_in_rule__StatemachineActionPeripheralPTAuthorization__Group__030437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_192_in_rule__StatemachineActionPeripheralPTAuthorization__Group__0__Impl30465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__1__Impl_in_rule__StatemachineActionPeripheralPTAuthorization__Group__130496 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__2_in_rule__StatemachineActionPeripheralPTAuthorization__Group__130499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_193_in_rule__StatemachineActionPeripheralPTAuthorization__Group__1__Impl30527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__2__Impl_in_rule__StatemachineActionPeripheralPTAuthorization__Group__230558 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__3_in_rule__StatemachineActionPeripheralPTAuthorization__Group__230561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__AmountAssignment_2_in_rule__StatemachineActionPeripheralPTAuthorization__Group__2__Impl30588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__3__Impl_in_rule__StatemachineActionPeripheralPTAuthorization__Group__330618 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__4_in_rule__StatemachineActionPeripheralPTAuthorization__Group__330621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionPeripheralPTAuthorization__Group__3__Impl30649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__Group__4__Impl_in_rule__StatemachineActionPeripheralPTAuthorization__Group__430680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTAuthorization__DeviceAssignment_4_in_rule__StatemachineActionPeripheralPTAuthorization__Group__4__Impl30707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__0__Impl_in_rule__StatemachineActionPeripheralPTResponse__Group__030747 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__1_in_rule__StatemachineActionPeripheralPTResponse__Group__030750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_194_in_rule__StatemachineActionPeripheralPTResponse__Group__0__Impl30778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__1__Impl_in_rule__StatemachineActionPeripheralPTResponse__Group__130809 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__2_in_rule__StatemachineActionPeripheralPTResponse__Group__130812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_195_in_rule__StatemachineActionPeripheralPTResponse__Group__1__Impl30840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__Group__2__Impl_in_rule__StatemachineActionPeripheralPTResponse__Group__230871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPTResponse__DeviceAssignment_2_in_rule__StatemachineActionPeripheralPTResponse__Group__2__Impl30898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__0__Impl_in_rule__StatemachineActionPeripheralPrintReport__Group__030934 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__1_in_rule__StatemachineActionPeripheralPrintReport__Group__030937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_196_in_rule__StatemachineActionPeripheralPrintReport__Group__0__Impl30965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__1__Impl_in_rule__StatemachineActionPeripheralPrintReport__Group__130996 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__2_in_rule__StatemachineActionPeripheralPrintReport__Group__130999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__ReportAssignment_1_in_rule__StatemachineActionPeripheralPrintReport__Group__1__Impl31026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group__2__Impl_in_rule__StatemachineActionPeripheralPrintReport__Group__231056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group_2__0_in_rule__StatemachineActionPeripheralPrintReport__Group__2__Impl31083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group_2__0__Impl_in_rule__StatemachineActionPeripheralPrintReport__Group_2__031120 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group_2__1_in_rule__StatemachineActionPeripheralPrintReport__Group_2__031123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__HasFilterAssignment_2_0_in_rule__StatemachineActionPeripheralPrintReport__Group_2__0__Impl31150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__Group_2__1__Impl_in_rule__StatemachineActionPeripheralPrintReport__Group_2__131180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionPeripheralPrintReport__KeyAssignment_2_1_in_rule__StatemachineActionPeripheralPrintReport__Group_2__1__Impl31207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__0__Impl_in_rule__StatemachineOperation__Group__031241 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__1_in_rule__StatemachineOperation__Group__031244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_197_in_rule__StatemachineOperation__Group__0__Impl31272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__1__Impl_in_rule__StatemachineOperation__Group__131303 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__2_in_rule__StatemachineOperation__Group__131306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__OperationAssignment_1_in_rule__StatemachineOperation__Group__1__Impl31333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__2__Impl_in_rule__StatemachineOperation__Group__231363 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__3_in_rule__StatemachineOperation__Group__231366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_198_in_rule__StatemachineOperation__Group__2__Impl31394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__3__Impl_in_rule__StatemachineOperation__Group__331425 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__4_in_rule__StatemachineOperation__Group__331428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__FirstAssignment_3_in_rule__StatemachineOperation__Group__3__Impl31455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__4__Impl_in_rule__StatemachineOperation__Group__431486 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__5_in_rule__StatemachineOperation__Group__431489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__MoreAssignment_4_in_rule__StatemachineOperation__Group__4__Impl31516 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__StatemachineOperation__Group__5__Impl_in_rule__StatemachineOperation__Group__531547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_199_in_rule__StatemachineOperation__Group__5__Impl31575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__0__Impl_in_rule__StatemachineGuard__Group__031618 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__1_in_rule__StatemachineGuard__Group__031621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_200_in_rule__StatemachineGuard__Group__0__Impl31649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__1__Impl_in_rule__StatemachineGuard__Group__131680 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__2_in_rule__StatemachineGuard__Group__131683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__GuardAssignment_1_in_rule__StatemachineGuard__Group__1__Impl31710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group__2__Impl_in_rule__StatemachineGuard__Group__231740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__0_in_rule__StatemachineGuard__Group__2__Impl31767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__0__Impl_in_rule__StatemachineGuard__Group_2__031804 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__1_in_rule__StatemachineGuard__Group_2__031807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__HasOnFailAssignment_2_0_in_rule__StatemachineGuard__Group_2__0__Impl31834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__1__Impl_in_rule__StatemachineGuard__Group_2__131864 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__2_in_rule__StatemachineGuard__Group_2__131867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_201_in_rule__StatemachineGuard__Group_2__1__Impl31895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__2__Impl_in_rule__StatemachineGuard__Group_2__231926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__3_in_rule__StatemachineGuard__Group_2__231929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__OnFailCaptionAssignment_2_2_in_rule__StatemachineGuard__Group_2__2__Impl31956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__3__Impl_in_rule__StatemachineGuard__Group_2__331986 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__4_in_rule__StatemachineGuard__Group_2__331989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_202_in_rule__StatemachineGuard__Group_2__3__Impl32017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__4__Impl_in_rule__StatemachineGuard__Group_2__432048 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__5_in_rule__StatemachineGuard__Group_2__432051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__OnFailDescriptionAssignment_2_4_in_rule__StatemachineGuard__Group_2__4__Impl32078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__5__Impl_in_rule__StatemachineGuard__Group_2__532108 = new BitSet(new long[]{0x0000000000000000L,0x000000000000F800L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__6_in_rule__StatemachineGuard__Group_2__532111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_203_in_rule__StatemachineGuard__Group_2__5__Impl32139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__Group_2__6__Impl_in_rule__StatemachineGuard__Group_2__632170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineGuard__OnFailTypeAssignment_2_6_in_rule__StatemachineGuard__Group_2__6__Impl32197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__0__Impl_in_rule__StatemachineFunction__Group__032241 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__1_in_rule__StatemachineFunction__Group__032244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_204_in_rule__StatemachineFunction__Group__0__Impl32272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__1__Impl_in_rule__StatemachineFunction__Group__132303 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__2_in_rule__StatemachineFunction__Group__132306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__FunctionAssignment_1_in_rule__StatemachineFunction__Group__1__Impl32333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__2__Impl_in_rule__StatemachineFunction__Group__232363 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__3_in_rule__StatemachineFunction__Group__232366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_198_in_rule__StatemachineFunction__Group__2__Impl32394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__3__Impl_in_rule__StatemachineFunction__Group__332425 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__4_in_rule__StatemachineFunction__Group__332428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__FirstAssignment_3_in_rule__StatemachineFunction__Group__3__Impl32455 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets015 {
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__4__Impl_in_rule__StatemachineFunction__Group__432486 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000001E9084L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__5_in_rule__StatemachineFunction__Group__432489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__MoreAssignment_4_in_rule__StatemachineFunction__Group__4__Impl32516 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__StatemachineFunction__Group__5__Impl_in_rule__StatemachineFunction__Group__532547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_199_in_rule__StatemachineFunction__Group__5__Impl32575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__0__Impl_in_rule__StatemachineStorage__Group__032618 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__1_in_rule__StatemachineStorage__Group__032621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_205_in_rule__StatemachineStorage__Group__0__Impl32649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__1__Impl_in_rule__StatemachineStorage__Group__132680 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__2_in_rule__StatemachineStorage__Group__132683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__ContentAssignment_1_in_rule__StatemachineStorage__Group__1__Impl32710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__2__Impl_in_rule__StatemachineStorage__Group__232740 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__3_in_rule__StatemachineStorage__Group__232743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_206_in_rule__StatemachineStorage__Group__2__Impl32771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__3__Impl_in_rule__StatemachineStorage__Group__332802 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__4_in_rule__StatemachineStorage__Group__332805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__KeyAssignment_3_in_rule__StatemachineStorage__Group__3__Impl32832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__4__Impl_in_rule__StatemachineStorage__Group__432862 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__5_in_rule__StatemachineStorage__Group__432865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineStorage__Group__4__Impl32893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__Group__5__Impl_in_rule__StatemachineStorage__Group__532924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorage__AttributeAssignment_5_in_rule__StatemachineStorage__Group__5__Impl32951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__0__Impl_in_rule__StatemachineStorageRetrieve__Group__032993 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__1_in_rule__StatemachineStorageRetrieve__Group__032996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_207_in_rule__StatemachineStorageRetrieve__Group__0__Impl33024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__1__Impl_in_rule__StatemachineStorageRetrieve__Group__133055 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__2_in_rule__StatemachineStorageRetrieve__Group__133058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_195_in_rule__StatemachineStorageRetrieve__Group__1__Impl33086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__2__Impl_in_rule__StatemachineStorageRetrieve__Group__233117 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__3_in_rule__StatemachineStorageRetrieve__Group__233120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__KeyAssignment_2_in_rule__StatemachineStorageRetrieve__Group__2__Impl33147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__3__Impl_in_rule__StatemachineStorageRetrieve__Group__333177 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__4_in_rule__StatemachineStorageRetrieve__Group__333180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineStorageRetrieve__Group__3__Impl33208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__Group__4__Impl_in_rule__StatemachineStorageRetrieve__Group__433239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieve__AttributeAssignment_4_in_rule__StatemachineStorageRetrieve__Group__4__Impl33266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__0__Impl_in_rule__StatemachineActionConditionalTransition__Group__033306 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__1_in_rule__StatemachineActionConditionalTransition__Group__033309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_208_in_rule__StatemachineActionConditionalTransition__Group__0__Impl33337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__1__Impl_in_rule__StatemachineActionConditionalTransition__Group__133368 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__2_in_rule__StatemachineActionConditionalTransition__Group__133371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__TransitionAssignment_1_in_rule__StatemachineActionConditionalTransition__Group__1__Impl33398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__2__Impl_in_rule__StatemachineActionConditionalTransition__Group__233428 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__3_in_rule__StatemachineActionConditionalTransition__Group__233431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__GuardAssignment_2_in_rule__StatemachineActionConditionalTransition__Group__2__Impl33458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__3__Impl_in_rule__StatemachineActionConditionalTransition__Group__333488 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4E5E7FD781C00080L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__4_in_rule__StatemachineActionConditionalTransition__Group__333491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineActionConditionalTransition__Group__3__Impl33519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__4__Impl_in_rule__StatemachineActionConditionalTransition__Group__433550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4E5E7FD781C00080L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__5_in_rule__StatemachineActionConditionalTransition__Group__433553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__ActionsAssignment_4_in_rule__StatemachineActionConditionalTransition__Group__4__Impl33580 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x4E5E7FD781C00000L,0x000000002FE12231L});
+        public static final BitSet FOLLOW_rule__StatemachineActionConditionalTransition__Group__5__Impl_in_rule__StatemachineActionConditionalTransition__Group__533611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineActionConditionalTransition__Group__5__Impl33639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvent__Group__0__Impl_in_rule__StatemachineActionFieldSourceEvent__Group__033682 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvent__Group__1_in_rule__StatemachineActionFieldSourceEvent__Group__033685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvent__Group__1__Impl_in_rule__StatemachineActionFieldSourceEvent__Group__133743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__StatemachineActionFieldSourceEvent__Group__1__Impl33771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslate__Group__0__Impl_in_rule__StatemachineActionFieldSourceTranslate__Group__033806 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslate__Group__1_in_rule__StatemachineActionFieldSourceTranslate__Group__033809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_209_in_rule__StatemachineActionFieldSourceTranslate__Group__0__Impl33837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslate__Group__1__Impl_in_rule__StatemachineActionFieldSourceTranslate__Group__133868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslate__TextAssignment_1_in_rule__StatemachineActionFieldSourceTranslate__Group__1__Impl33895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__0__Impl_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__033929 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__1_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__033932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_210_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__0__Impl33960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__1__Impl_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__133991 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__2_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__133994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__DtoAssignment_1_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__1__Impl34021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__2__Impl_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__234051 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__3_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__234054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__2__Impl34082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__Group__3__Impl_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__334113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttribute__AttributeAssignment_3_in_rule__StatemachineActionFieldSourceDtoAttribute__Group__3__Impl34140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__0__Impl_in_rule__StatemachineActionFieldSourceStringMore__Group__034178 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__1_in_rule__StatemachineActionFieldSourceStringMore__Group__034181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__1__Impl_in_rule__StatemachineActionFieldSourceStringMore__Group__134239 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__2_in_rule__StatemachineActionFieldSourceStringMore__Group__134242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldSourceStringMore__Group__1__Impl34270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__Group__2__Impl_in_rule__StatemachineActionFieldSourceStringMore__Group__234301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceStringMore__TextAssignment_2_in_rule__StatemachineActionFieldSourceStringMore__Group__2__Impl34328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__0__Impl_in_rule__StatemachineActionFieldSourceNumberMore__Group__034364 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__1_in_rule__StatemachineActionFieldSourceNumberMore__Group__034367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__1__Impl_in_rule__StatemachineActionFieldSourceNumberMore__Group__134425 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__2_in_rule__StatemachineActionFieldSourceNumberMore__Group__134428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldSourceNumberMore__Group__1__Impl34456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__Group__2__Impl_in_rule__StatemachineActionFieldSourceNumberMore__Group__234487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceNumberMore__ValueAssignment_2_in_rule__StatemachineActionFieldSourceNumberMore__Group__2__Impl34514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__0__Impl_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__034550 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__1_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__034553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__1__Impl_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__134611 = new BitSet(new long[]{0xE000000000000000L,0x00000000000007FFL});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__2_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__134614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__1__Impl34642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__Group__2__Impl_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__234673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceEvaluateMore__EvaluationtypeAssignment_2_in_rule__StatemachineActionFieldSourceEvaluateMore__Group__2__Impl34700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__0__Impl_in_rule__StatemachineActionFieldSourceTranslateMore__Group__034736 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__1_in_rule__StatemachineActionFieldSourceTranslateMore__Group__034739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__1__Impl_in_rule__StatemachineActionFieldSourceTranslateMore__Group__134797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__2_in_rule__StatemachineActionFieldSourceTranslateMore__Group__134800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldSourceTranslateMore__Group__1__Impl34828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__2__Impl_in_rule__StatemachineActionFieldSourceTranslateMore__Group__234859 = new BitSet(new long[]{0x0000000000000020L});
+    }
+
+    protected static class FollowSets016 {
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__3_in_rule__StatemachineActionFieldSourceTranslateMore__Group__234862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_209_in_rule__StatemachineActionFieldSourceTranslateMore__Group__2__Impl34890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__Group__3__Impl_in_rule__StatemachineActionFieldSourceTranslateMore__Group__334921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceTranslateMore__TextAssignment_3_in_rule__StatemachineActionFieldSourceTranslateMore__Group__3__Impl34948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__0__Impl_in_rule__StatemachineActionFieldGetMore__Group__034986 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__1_in_rule__StatemachineActionFieldGetMore__Group__034989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__1__Impl_in_rule__StatemachineActionFieldGetMore__Group__135047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__2_in_rule__StatemachineActionFieldGetMore__Group__135050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldGetMore__Group__1__Impl35078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__2__Impl_in_rule__StatemachineActionFieldGetMore__Group__235109 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__3_in_rule__StatemachineActionFieldGetMore__Group__235112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_211_in_rule__StatemachineActionFieldGetMore__Group__2__Impl35140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__Group__3__Impl_in_rule__StatemachineActionFieldGetMore__Group__335171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGetMore__AttributeAssignment_3_in_rule__StatemachineActionFieldGetMore__Group__3__Impl35198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__0__Impl_in_rule__StatemachineOperationMore__Group__035236 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__1_in_rule__StatemachineOperationMore__Group__035239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__1__Impl_in_rule__StatemachineOperationMore__Group__135297 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__2_in_rule__StatemachineOperationMore__Group__135300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineOperationMore__Group__1__Impl35328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__2__Impl_in_rule__StatemachineOperationMore__Group__235359 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__3_in_rule__StatemachineOperationMore__Group__235362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_197_in_rule__StatemachineOperationMore__Group__2__Impl35390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__Group__3__Impl_in_rule__StatemachineOperationMore__Group__335421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationMore__OperationAssignment_3_in_rule__StatemachineOperationMore__Group__3__Impl35448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__0__Impl_in_rule__StatemachineStorageRetrieveMore__Group__035486 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__1_in_rule__StatemachineStorageRetrieveMore__Group__035489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__1__Impl_in_rule__StatemachineStorageRetrieveMore__Group__135547 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__2_in_rule__StatemachineStorageRetrieveMore__Group__135550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineStorageRetrieveMore__Group__1__Impl35578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__2__Impl_in_rule__StatemachineStorageRetrieveMore__Group__235609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__3_in_rule__StatemachineStorageRetrieveMore__Group__235612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_207_in_rule__StatemachineStorageRetrieveMore__Group__2__Impl35640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__3__Impl_in_rule__StatemachineStorageRetrieveMore__Group__335671 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__4_in_rule__StatemachineStorageRetrieveMore__Group__335674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_195_in_rule__StatemachineStorageRetrieveMore__Group__3__Impl35702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__4__Impl_in_rule__StatemachineStorageRetrieveMore__Group__435733 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__5_in_rule__StatemachineStorageRetrieveMore__Group__435736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__KeyAssignment_4_in_rule__StatemachineStorageRetrieveMore__Group__4__Impl35763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__5__Impl_in_rule__StatemachineStorageRetrieveMore__Group__535793 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__6_in_rule__StatemachineStorageRetrieveMore__Group__535796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineStorageRetrieveMore__Group__5__Impl35824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__Group__6__Impl_in_rule__StatemachineStorageRetrieveMore__Group__635855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineStorageRetrieveMore__AttributeAssignment_6_in_rule__StatemachineStorageRetrieveMore__Group__6__Impl35882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__0__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__035926 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__1_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__035929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__1__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__135987 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__2_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__135990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__1__Impl36018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__2__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__236049 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__3_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__236052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_210_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__2__Impl36080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__3__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__336111 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__4_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__336114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__DtoAssignment_3_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__3__Impl36141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__4__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__436171 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__5_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__436174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__4__Impl36202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__5__Impl_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__536233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSourceDtoAttributeMore__AttributeAssignment_5_in_rule__StatemachineActionFieldSourceDtoAttributeMore__Group__5__Impl36260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__Group__0__Impl_in_rule__StatemachineActionFieldConcatenation__Group__036302 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__Group__1_in_rule__StatemachineActionFieldConcatenation__Group__036305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__FirstAssignment_0_in_rule__StatemachineActionFieldConcatenation__Group__0__Impl36332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__Group__1__Impl_in_rule__StatemachineActionFieldConcatenation__Group__136362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldConcatenation__MoreAssignment_1_in_rule__StatemachineActionFieldConcatenation__Group__1__Impl36389 = new BitSet(new long[]{0x0000000400000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__0__Impl_in_rule__StatemachineOperationParameterMore__Group__036424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__1_in_rule__StatemachineOperationParameterMore__Group__036427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__1__Impl_in_rule__StatemachineOperationParameterMore__Group__136485 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__2_in_rule__StatemachineOperationParameterMore__Group__136488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_212_in_rule__StatemachineOperationParameterMore__Group__1__Impl36516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__Group__2__Impl_in_rule__StatemachineOperationParameterMore__Group__236547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineOperationParameterMore__SourceAssignment_2_in_rule__StatemachineOperationParameterMore__Group__2__Impl36574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__0__Impl_in_rule__StatemachineActionFieldSet__Group__036610 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__1_in_rule__StatemachineActionFieldSet__Group__036613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_213_in_rule__StatemachineActionFieldSet__Group__0__Impl36641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__1__Impl_in_rule__StatemachineActionFieldSet__Group__136672 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__2_in_rule__StatemachineActionFieldSet__Group__136675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__SourceAssignment_1_in_rule__StatemachineActionFieldSet__Group__1__Impl36702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__2__Impl_in_rule__StatemachineActionFieldSet__Group__236732 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__3_in_rule__StatemachineActionFieldSet__Group__236735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionFieldSet__Group__2__Impl36763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__Group__3__Impl_in_rule__StatemachineActionFieldSet__Group__336794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldSet__AttributeAssignment_3_in_rule__StatemachineActionFieldSet__Group__3__Impl36821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldClear__Group__0__Impl_in_rule__StatemachineActionFieldClear__Group__036859 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldClear__Group__1_in_rule__StatemachineActionFieldClear__Group__036862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_214_in_rule__StatemachineActionFieldClear__Group__0__Impl36890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldClear__Group__1__Impl_in_rule__StatemachineActionFieldClear__Group__136921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldClear__AttributeAssignment_1_in_rule__StatemachineActionFieldClear__Group__1__Impl36948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGet__Group__0__Impl_in_rule__StatemachineActionFieldGet__Group__036982 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGet__Group__1_in_rule__StatemachineActionFieldGet__Group__036985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_211_in_rule__StatemachineActionFieldGet__Group__0__Impl37013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGet__Group__1__Impl_in_rule__StatemachineActionFieldGet__Group__137044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldGet__AttributeAssignment_1_in_rule__StatemachineActionFieldGet__Group__1__Impl37071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldRemove__Group__0__Impl_in_rule__StatemachineActionFieldRemove__Group__037105 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldRemove__Group__1_in_rule__StatemachineActionFieldRemove__Group__037108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_215_in_rule__StatemachineActionFieldRemove__Group__0__Impl37136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldRemove__Group__1__Impl_in_rule__StatemachineActionFieldRemove__Group__137167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionFieldRemove__AttributeAssignment_1_in_rule__StatemachineActionFieldRemove__Group__1__Impl37194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemVisible__Group__0__Impl_in_rule__StatemachineActionItemVisible__Group__037228 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemVisible__Group__1_in_rule__StatemachineActionItemVisible__Group__037231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_216_in_rule__StatemachineActionItemVisible__Group__0__Impl37259 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets017 {
+        public static final BitSet FOLLOW_rule__StatemachineActionItemVisible__Group__1__Impl_in_rule__StatemachineActionItemVisible__Group__137290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemVisible__AttributeAssignment_1_in_rule__StatemachineActionItemVisible__Group__1__Impl37317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemInvisible__Group__0__Impl_in_rule__StatemachineActionItemInvisible__Group__037351 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemInvisible__Group__1_in_rule__StatemachineActionItemInvisible__Group__037354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_217_in_rule__StatemachineActionItemInvisible__Group__0__Impl37382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemInvisible__Group__1__Impl_in_rule__StatemachineActionItemInvisible__Group__137413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionItemInvisible__AttributeAssignment_1_in_rule__StatemachineActionItemInvisible__Group__1__Impl37440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__0__Impl_in_rule__StatemachineActionButtonCaption__Group__037474 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__1_in_rule__StatemachineActionButtonCaption__Group__037477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_201_in_rule__StatemachineActionButtonCaption__Group__0__Impl37505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__1__Impl_in_rule__StatemachineActionButtonCaption__Group__137536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__2_in_rule__StatemachineActionButtonCaption__Group__137539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__CaptionAssignment_1_in_rule__StatemachineActionButtonCaption__Group__1__Impl37566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__2__Impl_in_rule__StatemachineActionButtonCaption__Group__237596 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__3_in_rule__StatemachineActionButtonCaption__Group__237599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionButtonCaption__Group__2__Impl37627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__Group__3__Impl_in_rule__StatemachineActionButtonCaption__Group__337658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonCaption__AttributeAssignment_3_in_rule__StatemachineActionButtonCaption__Group__3__Impl37685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__0__Impl_in_rule__StatemachineActionButtonImage__Group__037723 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__1_in_rule__StatemachineActionButtonImage__Group__037726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_218_in_rule__StatemachineActionButtonImage__Group__0__Impl37754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__1__Impl_in_rule__StatemachineActionButtonImage__Group__137785 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__2_in_rule__StatemachineActionButtonImage__Group__137788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__ImageAssignment_1_in_rule__StatemachineActionButtonImage__Group__1__Impl37815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__2__Impl_in_rule__StatemachineActionButtonImage__Group__237845 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__3_in_rule__StatemachineActionButtonImage__Group__237848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__StatemachineActionButtonImage__Group__2__Impl37876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__Group__3__Impl_in_rule__StatemachineActionButtonImage__Group__337907 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionButtonImage__AttributeAssignment_3_in_rule__StatemachineActionButtonImage__Group__3__Impl37934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__0__Impl_in_rule__StatemachineActionDTOFind__Group__037972 = new BitSet(new long[]{0xE0000008000000A0L,0x00000000000007FFL,0x0000000000008000L,0x00000000000E9004L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__1_in_rule__StatemachineActionDTOFind__Group__037975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_219_in_rule__StatemachineActionDTOFind__Group__0__Impl38003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__1__Impl_in_rule__StatemachineActionDTOFind__Group__138034 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__2_in_rule__StatemachineActionDTOFind__Group__138037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__SearchAssignment_1_in_rule__StatemachineActionDTOFind__Group__1__Impl38064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__2__Impl_in_rule__StatemachineActionDTOFind__Group__238094 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__3_in_rule__StatemachineActionDTOFind__Group__238097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_220_in_rule__StatemachineActionDTOFind__Group__2__Impl38125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__3__Impl_in_rule__StatemachineActionDTOFind__Group__338156 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__4_in_rule__StatemachineActionDTOFind__Group__338159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__DtoAssignment_3_in_rule__StatemachineActionDTOFind__Group__3__Impl38186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__4__Impl_in_rule__StatemachineActionDTOFind__Group__438216 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__5_in_rule__StatemachineActionDTOFind__Group__438219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineActionDTOFind__Group__4__Impl38247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__Group__5__Impl_in_rule__StatemachineActionDTOFind__Group__538278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionDTOFind__AttributeAssignment_5_in_rule__StatemachineActionDTOFind__Group__5__Impl38305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionScheduler__Group__0__Impl_in_rule__StatemachineActionScheduler__Group__038347 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineActionScheduler__Group__1_in_rule__StatemachineActionScheduler__Group__038350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_221_in_rule__StatemachineActionScheduler__Group__0__Impl38378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionScheduler__Group__1__Impl_in_rule__StatemachineActionScheduler__Group__138409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineActionScheduler__SchedulerAssignment_1_in_rule__StatemachineActionScheduler__Group__1__Impl38436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__0__Impl_in_rule__StatemachineControlButton__Group__038470 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__1_in_rule__StatemachineControlButton__Group__038473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_222_in_rule__StatemachineControlButton__Group__0__Impl38501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__1__Impl_in_rule__StatemachineControlButton__Group__138532 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__2_in_rule__StatemachineControlButton__Group__138535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__NameAssignment_1_in_rule__StatemachineControlButton__Group__1__Impl38562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__2__Impl_in_rule__StatemachineControlButton__Group__238592 = new BitSet(new long[]{0x1C00000000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__3_in_rule__StatemachineControlButton__Group__238595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__StatemachineControlButton__Group__2__Impl38623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__3__Impl_in_rule__StatemachineControlButton__Group__338654 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__4_in_rule__StatemachineControlButton__Group__338657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__EventTypeAssignment_3_in_rule__StatemachineControlButton__Group__3__Impl38684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__4__Impl_in_rule__StatemachineControlButton__Group__438714 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__5_in_rule__StatemachineControlButton__Group__438717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineControlButton__Group__4__Impl38745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__5__Impl_in_rule__StatemachineControlButton__Group__538776 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__6_in_rule__StatemachineControlButton__Group__538779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__ButtonsAssignment_5_in_rule__StatemachineControlButton__Group__5__Impl38806 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButton__Group__6__Impl_in_rule__StatemachineControlButton__Group__638837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineControlButton__Group__6__Impl38865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__0__Impl_in_rule__StatemachineControlField__Group__038910 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__1_in_rule__StatemachineControlField__Group__038913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_223_in_rule__StatemachineControlField__Group__0__Impl38941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__1__Impl_in_rule__StatemachineControlField__Group__138972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__2_in_rule__StatemachineControlField__Group__138975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__NameAssignment_1_in_rule__StatemachineControlField__Group__1__Impl39002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__2__Impl_in_rule__StatemachineControlField__Group__239032 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000060000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__3_in_rule__StatemachineControlField__Group__239035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineControlField__Group__2__Impl39063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__3__Impl_in_rule__StatemachineControlField__Group__339094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__4_in_rule__StatemachineControlField__Group__339097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__UnorderedGroup_3_in_rule__StatemachineControlField__Group__3__Impl39124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlField__Group__4__Impl_in_rule__StatemachineControlField__Group__439154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineControlField__Group__4__Impl39182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__0__Impl_in_rule__StatemachineControlDTO__Group__039223 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__1_in_rule__StatemachineControlDTO__Group__039226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_224_in_rule__StatemachineControlDTO__Group__0__Impl39254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__1__Impl_in_rule__StatemachineControlDTO__Group__139285 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__2_in_rule__StatemachineControlDTO__Group__139288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__NameAssignment_1_in_rule__StatemachineControlDTO__Group__1__Impl39315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__2__Impl_in_rule__StatemachineControlDTO__Group__239345 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__3_in_rule__StatemachineControlDTO__Group__239348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineControlDTO__Group__2__Impl39376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__3__Impl_in_rule__StatemachineControlDTO__Group__339407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__4_in_rule__StatemachineControlDTO__Group__339410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__DtosAssignment_3_in_rule__StatemachineControlDTO__Group__3__Impl39437 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTO__Group__4__Impl_in_rule__StatemachineControlDTO__Group__439468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineControlDTO__Group__4__Impl39496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__0__Impl_in_rule__StatemachineControlScheduler__Group__039537 = new BitSet(new long[]{0x0000000000000010L});
+    }
+
+    protected static class FollowSets018 {
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__1_in_rule__StatemachineControlScheduler__Group__039540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_225_in_rule__StatemachineControlScheduler__Group__0__Impl39568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__1__Impl_in_rule__StatemachineControlScheduler__Group__139599 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__2_in_rule__StatemachineControlScheduler__Group__139602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__NameAssignment_1_in_rule__StatemachineControlScheduler__Group__1__Impl39629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__2__Impl_in_rule__StatemachineControlScheduler__Group__239659 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__3_in_rule__StatemachineControlScheduler__Group__239662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineControlScheduler__Group__2__Impl39690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__3__Impl_in_rule__StatemachineControlScheduler__Group__339721 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__4_in_rule__StatemachineControlScheduler__Group__339724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__SchedulersAssignment_3_in_rule__StatemachineControlScheduler__Group__3__Impl39751 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlScheduler__Group__4__Impl_in_rule__StatemachineControlScheduler__Group__439782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineControlScheduler__Group__4__Impl39810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceLineDisplay__Group__0__Impl_in_rule__StatemachinePeripheralDeviceLineDisplay__Group__039851 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceLineDisplay__Group__1_in_rule__StatemachinePeripheralDeviceLineDisplay__Group__039854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_226_in_rule__StatemachinePeripheralDeviceLineDisplay__Group__0__Impl39882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceLineDisplay__Group__1__Impl_in_rule__StatemachinePeripheralDeviceLineDisplay__Group__139913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceLineDisplay__NameAssignment_1_in_rule__StatemachinePeripheralDeviceLineDisplay__Group__1__Impl39940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePOSPrinter__Group__0__Impl_in_rule__StatemachinePeripheralDevicePOSPrinter__Group__039974 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePOSPrinter__Group__1_in_rule__StatemachinePeripheralDevicePOSPrinter__Group__039977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_227_in_rule__StatemachinePeripheralDevicePOSPrinter__Group__0__Impl40005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePOSPrinter__Group__1__Impl_in_rule__StatemachinePeripheralDevicePOSPrinter__Group__140036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePOSPrinter__NameAssignment_1_in_rule__StatemachinePeripheralDevicePOSPrinter__Group__1__Impl40063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceCashDrawer__Group__0__Impl_in_rule__StatemachinePeripheralDeviceCashDrawer__Group__040097 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceCashDrawer__Group__1_in_rule__StatemachinePeripheralDeviceCashDrawer__Group__040100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_228_in_rule__StatemachinePeripheralDeviceCashDrawer__Group__0__Impl40128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceCashDrawer__Group__1__Impl_in_rule__StatemachinePeripheralDeviceCashDrawer__Group__140159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDeviceCashDrawer__NameAssignment_1_in_rule__StatemachinePeripheralDeviceCashDrawer__Group__1__Impl40186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePT__Group__0__Impl_in_rule__StatemachinePeripheralDevicePT__Group__040220 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePT__Group__1_in_rule__StatemachinePeripheralDevicePT__Group__040223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_229_in_rule__StatemachinePeripheralDevicePT__Group__0__Impl40251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePT__Group__1__Impl_in_rule__StatemachinePeripheralDevicePT__Group__140282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachinePeripheralDevicePT__NameAssignment_1_in_rule__StatemachinePeripheralDevicePT__Group__1__Impl40309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__0__Impl_in_rule__StatemachineControlPeripheral__Group__040343 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__1_in_rule__StatemachineControlPeripheral__Group__040346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_230_in_rule__StatemachineControlPeripheral__Group__0__Impl40374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__1__Impl_in_rule__StatemachineControlPeripheral__Group__140405 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__2_in_rule__StatemachineControlPeripheral__Group__140408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__NameAssignment_1_in_rule__StatemachineControlPeripheral__Group__1__Impl40435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__2__Impl_in_rule__StatemachineControlPeripheral__Group__240465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000003C00000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__3_in_rule__StatemachineControlPeripheral__Group__240468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__StatemachineControlPeripheral__Group__2__Impl40496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__3__Impl_in_rule__StatemachineControlPeripheral__Group__340527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000003C00000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__4_in_rule__StatemachineControlPeripheral__Group__340530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__LineDisplaysAssignment_3_in_rule__StatemachineControlPeripheral__Group__3__Impl40557 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__4__Impl_in_rule__StatemachineControlPeripheral__Group__440588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000003C00000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__5_in_rule__StatemachineControlPeripheral__Group__440591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__PosPrintersAssignment_4_in_rule__StatemachineControlPeripheral__Group__4__Impl40618 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__5__Impl_in_rule__StatemachineControlPeripheral__Group__540649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000003C00000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__6_in_rule__StatemachineControlPeripheral__Group__540652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__CashDrawersAssignment_5_in_rule__StatemachineControlPeripheral__Group__5__Impl40679 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__6__Impl_in_rule__StatemachineControlPeripheral__Group__640710 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L,0x0000003C00000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__7_in_rule__StatemachineControlPeripheral__Group__640713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__PaymentTerminalsAssignment_6_in_rule__StatemachineControlPeripheral__Group__6__Impl40740 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlPeripheral__Group__7__Impl_in_rule__StatemachineControlPeripheral__Group__740771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__StatemachineControlPeripheral__Group__7__Impl40799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__0__Impl_in_rule__StatemachineControlButtonAttribute__Group__040846 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__1_in_rule__StatemachineControlButtonAttribute__Group__040849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_231_in_rule__StatemachineControlButtonAttribute__Group__0__Impl40877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__1__Impl_in_rule__StatemachineControlButtonAttribute__Group__140908 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800008000L,0x0000010004000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__2_in_rule__StatemachineControlButtonAttribute__Group__140911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__NameAssignment_1_in_rule__StatemachineControlButtonAttribute__Group__1__Impl40938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__2__Impl_in_rule__StatemachineControlButtonAttribute__Group__240968 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800008000L,0x0000010004000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__3_in_rule__StatemachineControlButtonAttribute__Group__240971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group_2__0_in_rule__StatemachineControlButtonAttribute__Group__2__Impl40998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group__3__Impl_in_rule__StatemachineControlButtonAttribute__Group__341029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__EventAssignment_3_in_rule__StatemachineControlButtonAttribute__Group__3__Impl41056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group_2__0__Impl_in_rule__StatemachineControlButtonAttribute__Group_2__041094 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group_2__1_in_rule__StatemachineControlButtonAttribute__Group_2__041097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__HasImageAssignment_2_0_in_rule__StatemachineControlButtonAttribute__Group_2__0__Impl41124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__Group_2__1__Impl_in_rule__StatemachineControlButtonAttribute__Group_2__141154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttribute__ImageAssignment_2_1_in_rule__StatemachineControlButtonAttribute__Group_2__1__Impl41181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__0__Impl_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__041215 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__1_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__041218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__1__Impl_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__141276 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__2_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__141279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_232_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__1__Impl41307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__Group__2__Impl_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__241338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventKeyboard__KeystrokeAssignment_2_in_rule__StatemachineControlButtonAttributeEventKeyboard__Group__2__Impl41365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__0__Impl_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__041401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__1_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__041404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__1__Impl_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__141462 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__2_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__141465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__1__Impl41493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__Group__2__Impl_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__241524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventIdentity__IdentityAssignment_2_in_rule__StatemachineControlButtonAttributeEventIdentity__Group__2__Impl41551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__0__Impl_in_rule__StatemachineControlButtonAttributeEventEvent__Group__041587 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800008000L,0x0000010004000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__1_in_rule__StatemachineControlButtonAttributeEventEvent__Group__041590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__1__Impl_in_rule__StatemachineControlButtonAttributeEventEvent__Group__141648 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__2_in_rule__StatemachineControlButtonAttributeEventEvent__Group__141651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__StatemachineControlButtonAttributeEventEvent__Group__1__Impl41679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__Group__2__Impl_in_rule__StatemachineControlButtonAttributeEventEvent__Group__241710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlButtonAttributeEventEvent__EventAssignment_2_in_rule__StatemachineControlButtonAttributeEventEvent__Group__2__Impl41737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__0__Impl_in_rule__StatemachineControlFieldAttribute__Group__041773 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__1_in_rule__StatemachineControlFieldAttribute__Group__041776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_233_in_rule__StatemachineControlFieldAttribute__Group__0__Impl41804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__1__Impl_in_rule__StatemachineControlFieldAttribute__Group__141835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__2_in_rule__StatemachineControlFieldAttribute__Group__141838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__NameAssignment_1_in_rule__StatemachineControlFieldAttribute__Group__1__Impl41865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__2__Impl_in_rule__StatemachineControlFieldAttribute__Group__241895 = new BitSet(new long[]{0x03F8000000000000L});
+    }
+
+    protected static class FollowSets019 {
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__3_in_rule__StatemachineControlFieldAttribute__Group__241898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_203_in_rule__StatemachineControlFieldAttribute__Group__2__Impl41926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__Group__3__Impl_in_rule__StatemachineControlFieldAttribute__Group__341957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldAttribute__AttributeTypeAssignment_3_in_rule__StatemachineControlFieldAttribute__Group__3__Impl41984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldLayout__Group__0__Impl_in_rule__StatemachineControlFieldLayout__Group__042022 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldLayout__Group__1_in_rule__StatemachineControlFieldLayout__Group__042025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_234_in_rule__StatemachineControlFieldLayout__Group__0__Impl42053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldLayout__Group__1__Impl_in_rule__StatemachineControlFieldLayout__Group__142084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlFieldLayout__NameAssignment_1_in_rule__StatemachineControlFieldLayout__Group__1__Impl42111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__0__Impl_in_rule__StatemachineControlDTOAttribute__Group__042145 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__1_in_rule__StatemachineControlDTOAttribute__Group__042148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_210_in_rule__StatemachineControlDTOAttribute__Group__0__Impl42176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__1__Impl_in_rule__StatemachineControlDTOAttribute__Group__142207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__2_in_rule__StatemachineControlDTOAttribute__Group__142210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__NameAssignment_1_in_rule__StatemachineControlDTOAttribute__Group__1__Impl42237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__2__Impl_in_rule__StatemachineControlDTOAttribute__Group__242267 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__3_in_rule__StatemachineControlDTOAttribute__Group__242270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_203_in_rule__StatemachineControlDTOAttribute__Group__2__Impl42298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__3__Impl_in_rule__StatemachineControlDTOAttribute__Group__342329 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__4_in_rule__StatemachineControlDTOAttribute__Group__342332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__AttributeTypeAssignment_3_in_rule__StatemachineControlDTOAttribute__Group__3__Impl42359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group__4__Impl_in_rule__StatemachineControlDTOAttribute__Group__442389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group_4__0_in_rule__StatemachineControlDTOAttribute__Group__4__Impl42416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group_4__0__Impl_in_rule__StatemachineControlDTOAttribute__Group_4__042457 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group_4__1_in_rule__StatemachineControlDTOAttribute__Group_4__042460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__HasEventAssignment_4_0_in_rule__StatemachineControlDTOAttribute__Group_4__0__Impl42487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__Group_4__1__Impl_in_rule__StatemachineControlDTOAttribute__Group_4__142517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlDTOAttribute__EventAssignment_4_1_in_rule__StatemachineControlDTOAttribute__Group_4__1__Impl42544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__0__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__042578 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__1_in_rule__StatemachineControlSchedulerAttribute__Group__042581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_225_in_rule__StatemachineControlSchedulerAttribute__Group__0__Impl42609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__1__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__142640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__2_in_rule__StatemachineControlSchedulerAttribute__Group__142643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__NameAssignment_1_in_rule__StatemachineControlSchedulerAttribute__Group__1__Impl42670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__2__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__242700 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__3_in_rule__StatemachineControlSchedulerAttribute__Group__242703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_235_in_rule__StatemachineControlSchedulerAttribute__Group__2__Impl42731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__3__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__342762 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__4_in_rule__StatemachineControlSchedulerAttribute__Group__342765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__DelayAssignment_3_in_rule__StatemachineControlSchedulerAttribute__Group__3__Impl42792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__4__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__442822 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__5_in_rule__StatemachineControlSchedulerAttribute__Group__442825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_236_in_rule__StatemachineControlSchedulerAttribute__Group__4__Impl42853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__Group__5__Impl_in_rule__StatemachineControlSchedulerAttribute__Group__542884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineControlSchedulerAttribute__EventAssignment_5_in_rule__StatemachineControlSchedulerAttribute__Group__5__Impl42911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineImport__Group__0__Impl_in_rule__StatemachineImport__Group__042953 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__StatemachineImport__Group__1_in_rule__StatemachineImport__Group__042956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__StatemachineImport__Group__0__Impl42984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineImport__Group__1__Impl_in_rule__StatemachineImport__Group__143015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineImport__ImportedNamespaceAssignment_1_in_rule__StatemachineImport__Group__1__Impl43042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group__0__Impl_in_rule__StatemachineQualifiedNameWithWildCard__Group__043076 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group__1_in_rule__StatemachineQualifiedNameWithWildCard__Group__043079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__StatemachineQualifiedNameWithWildCard__Group__0__Impl43106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group__1__Impl_in_rule__StatemachineQualifiedNameWithWildCard__Group__143135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group_1__0_in_rule__StatemachineQualifiedNameWithWildCard__Group__1__Impl43162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__StatemachineQualifiedNameWithWildCard__Group_1__043197 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group_1__1_in_rule__StatemachineQualifiedNameWithWildCard__Group_1__043200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__StatemachineQualifiedNameWithWildCard__Group_1__0__Impl43228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StatemachineQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__StatemachineQualifiedNameWithWildCard__Group_1__143259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__StatemachineQualifiedNameWithWildCard__Group_1__1__Impl43287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0__Impl_in_rule__QualifiedName__Group__043322 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__1_in_rule__QualifiedName__Group__043325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group__0__Impl43352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__1__Impl_in_rule__QualifiedName__Group__143381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0_in_rule__QualifiedName__Group__1__Impl43408 = new BitSet(new long[]{0x0000080000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0__Impl_in_rule__QualifiedName__Group_1__043443 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1_in_rule__QualifiedName__Group_1__043446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__QualifiedName__Group_1__0__Impl43475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1__Impl_in_rule__QualifiedName__Group_1__143507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group_1__1__Impl43534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__0__Impl_in_rule__SignedNumber__Group__043567 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__1_in_rule__SignedNumber__Group__043570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__SignedNumber__Group__0__Impl43599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__1__Impl_in_rule__SignedNumber__Group__143632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__SignedNumber__Group__1__Impl43659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0__Impl_in_rule__UnsignedNumber__Group__043692 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1_in_rule__UnsignedNumber__Group__043695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group__0__Impl43722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1__Impl_in_rule__UnsignedNumber__Group__143751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0_in_rule__UnsignedNumber__Group__1__Impl43778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0__Impl_in_rule__UnsignedNumber__Group_1__043813 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1_in_rule__UnsignedNumber__Group_1__043816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__UnsignedNumber__Group_1__0__Impl43844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1__Impl_in_rule__UnsignedNumber__Group_1__143875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group_1__1__Impl43902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__043935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__043938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__143996 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__143999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__XAnnotation__Group__1__Impl44027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__244058 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__244061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl44088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__344118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl44145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__044184 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C000000000C0L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__044187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_198_in_rule__XAnnotation__Group_3__0__Impl44216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__144248 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C000000000C0L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__144251 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets020 {
+        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl44278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__244309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_199_in_rule__XAnnotation__Group_3__2__Impl44337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0__Impl_in_rule__XAnnotation__Group_3_1_0__044374 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__044377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0_in_rule__XAnnotation__Group_3_1_0__0__Impl44404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1__Impl_in_rule__XAnnotation__Group_3_1_0__144434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0_in_rule__XAnnotation__Group_3_1_0__1__Impl44461 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__044496 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1_in_rule__XAnnotation__Group_3_1_0_1__044499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_212_in_rule__XAnnotation__Group_3_1_0_1__0__Impl44527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1__Impl_in_rule__XAnnotation__Group_3_1_0_1__144558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1_in_rule__XAnnotation__Group_3_1_0_1__1__Impl44585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__044619 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__044622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl44649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__144679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl44706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__044740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl44767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__044799 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__044802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl44829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__144859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl44887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__044922 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28E00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__044925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl44952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__144982 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28E00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__144985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl45012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__245043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_237_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl45071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__045108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl45135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__045167 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__045170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__145228 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__145231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_238_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl45259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__245290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_239_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl45318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__045355 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__045358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl45385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__145415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl45442 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__045477 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__045480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_212_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl45508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__145539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl45566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__045600 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__045603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl45630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__145659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl45686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__045721 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__045724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__145782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl45811 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl45823 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__045860 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__045863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_212_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl45891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__145922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl45949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__045983 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28E00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__045986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl46013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__146043 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28E00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__146046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl46073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__246104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_237_in_rule__XAnnotationElementValue__Group_0__2__Impl46132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__046169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl46196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__046228 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__046231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__146289 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__146292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_238_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl46320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__246351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_239_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl46379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__046416 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__046419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl46446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__146476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl46503 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__046538 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__046541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_212_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl46569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__146600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValue__Group_0_1_1__1__Impl46627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__046661 = new BitSet(new long[]{0x0001E00000000010L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__046664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__146722 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__146725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl46752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__246782 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+    }
+
+    protected static class FollowSets021 {
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__246785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl46812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__346841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl46868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__046906 = new BitSet(new long[]{0x000000000C1F0000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__046909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl46936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__146965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl46992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__047027 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__047030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl47057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__147087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl47114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0__Impl_in_rule__XAssignment__Group_1_1_0__047148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0_in_rule__XAssignment__Group_1_1_0__0__Impl47175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0__Impl_in_rule__XAssignment__Group_1_1_0_0__047207 = new BitSet(new long[]{0x000000000C1F0000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__047210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1__Impl_in_rule__XAssignment__Group_1_1_0_0__147268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_1_1_0_0_1_in_rule__XAssignment__Group_1_1_0_0__1__Impl47295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__047329 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__047332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_5__0__Impl47360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__147391 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__147394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_5__1__Impl47422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__247453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl47481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__047518 = new BitSet(new long[]{0x0000000006000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__047521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpMultiAssign__Group_6__0__Impl47549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__147580 = new BitSet(new long[]{0x0000000006000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__147583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpMultiAssign__Group_6__1__Impl47612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__247645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__OpMultiAssign__Group_6__2__Impl47673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__047710 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__047713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl47740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__147769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl47796 = new BitSet(new long[]{0x0000000000004002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__047831 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__047834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl47861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__147891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl47918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__047952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl47979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0__Impl_in_rule__XOrExpression__Group_1_0_0__048011 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__048014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1__Impl_in_rule__XOrExpression__Group_1_0_0__148072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__FeatureAssignment_1_0_0_1_in_rule__XOrExpression__Group_1_0_0__1__Impl48099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__048133 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__048136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl48163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__148192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl48219 = new BitSet(new long[]{0x0000000000008002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__048254 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__048257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl48284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__148314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl48341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__048375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl48402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0__Impl_in_rule__XAndExpression__Group_1_0_0__048434 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__048437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1__Impl_in_rule__XAndExpression__Group_1_0_0__148495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__FeatureAssignment_1_0_0_1_in_rule__XAndExpression__Group_1_0_0__1__Impl48522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__048556 = new BitSet(new long[]{0x0000000001E00000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__048559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl48586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__148615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl48642 = new BitSet(new long[]{0x0000000001E00002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__048677 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__048680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl48707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__148737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl48764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__048798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl48825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0__Impl_in_rule__XEqualityExpression__Group_1_0_0__048857 = new BitSet(new long[]{0x0000000001E00000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__048860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1__Impl_in_rule__XEqualityExpression__Group_1_0_0__148918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__FeatureAssignment_1_0_0_1_in_rule__XEqualityExpression__Group_1_0_0__1__Impl48945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__048979 = new BitSet(new long[]{0x000000000E000000L,0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__048982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl49009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__149038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl49065 = new BitSet(new long[]{0x000000000E000002L,0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__049100 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__049103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl49130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__149160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl49187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0__049221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0_in_rule__XRelationalExpression__Group_1_0_0__0__Impl49248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__049280 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__049283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__149341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_240_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl49369 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets022 {
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__049404 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__049407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl49434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__149464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl49491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0__049525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0_in_rule__XRelationalExpression__Group_1_1_0__0__Impl49552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__049584 = new BitSet(new long[]{0x000000000E000000L,0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__049587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__149645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1_in_rule__XRelationalExpression__Group_1_1_0_0__1__Impl49672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__049706 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__049709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpCompare__Group_1__0__Impl49737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__149768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl49796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__049831 = new BitSet(new long[]{0x00000003FC000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__049834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl49861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__149890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl49917 = new BitSet(new long[]{0x00000003FC000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__049952 = new BitSet(new long[]{0x0007E10C080001F0L,0x0000000000000000L,0x0000000000080040L,0xFE28C00000000040L,0x000000000000400BL});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__049955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl49982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__150012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl50039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__050073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl50100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__050132 = new BitSet(new long[]{0x00000003FC000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__050135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__150193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1_in_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl50220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__050254 = new BitSet(new long[]{0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__050257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_2__0__Impl50285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__150316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__OpOther__Group_2__1__Impl50344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__050379 = new BitSet(new long[]{0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__050382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5__0__Impl50410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__150441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl50468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0__Impl_in_rule__OpOther__Group_5_1_0__050502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0_in_rule__OpOther__Group_5_1_0__0__Impl50529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0__Impl_in_rule__OpOther__Group_5_1_0_0__050561 = new BitSet(new long[]{0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__050564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5_1_0_0__0__Impl50592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1__Impl_in_rule__OpOther__Group_5_1_0_0__150623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5_1_0_0__1__Impl50651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__050686 = new BitSet(new long[]{0x0000000088000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__050689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6__0__Impl50717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__150748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl50775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0__Impl_in_rule__OpOther__Group_6_1_0__050809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0_in_rule__OpOther__Group_6_1_0__0__Impl50836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0__Impl_in_rule__OpOther__Group_6_1_0_0__050868 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__050871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6_1_0_0__0__Impl50899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1__Impl_in_rule__OpOther__Group_6_1_0_0__150930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6_1_0_0__1__Impl50958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__050993 = new BitSet(new long[]{0x0000000C00000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__050996 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/internal/StatemachineDSLActivator.java b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/internal/StatemachineDSLActivator.java
new file mode 100644
index 0000000..df15cb1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src-gen/org/eclipse/osbp/xtext/statemachine/ui/internal/StatemachineDSLActivator.java
@@ -0,0 +1,105 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_STATEMACHINE_STATEMACHINEDSL = "org.eclipse.osbp.xtext.statemachine.StatemachineDSL";
+	
+	private static final Logger logger = Logger.getLogger(StatemachineDSLActivator.class);
+	
+	private static StatemachineDSLActivator 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 StatemachineDSLActivator 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_STATEMACHINE_STATEMACHINEDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.statemachine.StatemachineDSLRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_STATEMACHINE_STATEMACHINEDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.statemachine.ui.StatemachineDSLUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLUiModule.java b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLUiModule.java
new file mode 100644
index 0000000..ec2be95
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/StatemachineDSLUiModule.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class StatemachineDSLUiModule extends org.eclipse.osbp.xtext.statemachine.ui.AbstractStatemachineDSLUiModule {
+	public StatemachineDSLUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.xtend
new file mode 100644
index 0000000..8737199
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.xtend
@@ -0,0 +1,102 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.contentassist
+
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.osbp.fork.mihalis.opal.widgets.ImageSelectorDialog
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.swt.graphics.Point
+import org.eclipse.swt.layout.FillLayout
+import org.eclipse.swt.widgets.Shell
+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 ImageFileNameTextApplier extends ReplacementTextApplier {
+	var ContentAssistContext context
+	var String[] extensions
+
+	def setContext(ContentAssistContext context) {
+		this.context = context
+	}
+
+	def setExtensions(String[] fileExtensions) {
+		extensions = fileExtensions
+	}
+
+	// this will inject a file dialog when selecting the file picker proposal 
+	override getActualReplacementString(ConfigurableCompletionProposal proposal) {
+		var display = context.getViewer().getTextWidget().getDisplay();
+		var shell = new Shell(display);
+		shell.setLocation(new Point(display.activeShell.location.x + 30, display.activeShell.location.y + 30))
+		shell.setLayout(new FillLayout());
+		var imageSelectorDialog = new ImageSelectorDialog(shell, 16);
+		imageSelectorDialog.setFilterExtensions(extensions)
+		var imageFileName = imageSelectorDialog.open(true);
+		return "\"".concat(imageFileName).concat("\"");
+	}
+}
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+class StatemachineDSLProposalProvider extends AbstractStatemachineDSLProposalProvider {
+	@Inject TerminalsProposalProvider provider
+	@Inject BasicDSLProposalProviderHelper providerHelper
+
+	/**
+	 * This override will enable 1 length non letter characters as keyword.
+	 */
+	override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		return true;
+	}
+
+	override protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
+		var result = super.isValidProposal(proposal, prefix, context);
+		return result;
+	}
+
+	def isActionValidProposal(EObject obj, String proposal, boolean result) {
+		return true
+	}
+
+		
+//	override completeStatemachineActionButton_Image(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+//		imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png")
+//	}
+
+	def imageFilePickerProposal(EObject model, Assignment assignment, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor, String fileExtensions) {
+		var fileName = createCompletionProposal("Select image file...", context) as ConfigurableCompletionProposal
+		if (fileName != null) {
+			var applier = new ImageFileNameTextApplier()
+			applier.setExtensions(fileExtensions.split(","))
+			applier.setContext(context)
+			fileName.setTextApplier = applier
+		}
+		acceptor.accept(fileName)
+	}
+
+	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_QualifiedNameWithWildcard(EObject model, RuleCall ruleCall,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	// ------------------------ delegates to TerminalsProposalProvider -----------------
+	override public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..fee5b49
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.xtend
@@ -0,0 +1,24 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.xtend
new file mode 100644
index 0000000..704617e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.xtend
@@ -0,0 +1,29 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.xtext.statemachine.ui.labeling
+
+import com.google.inject.Inject
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class StatemachineDSLLabelProvider extends org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider {
+
+	@Inject
+	new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	// Labels and icons can be computed like this:
+	
+//	def text(Greeting ele) {
+//		'A greeting to ' + ele.name
+//	}
+//
+//	def image(Greeting ele) {
+//		'Greeting.gif'
+//	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.xtend
new file mode 100644
index 0000000..3837bb0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.xtend
@@ -0,0 +1,13 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.xtext.statemachine.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class StatemachineDSLOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.xtend
new file mode 100644
index 0000000..63d8aff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/src/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.xtend
@@ -0,0 +1,26 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+//	@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.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.ImageFileNameTextApplier.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.ImageFileNameTextApplier.java._trace
new file mode 100644
index 0000000..e4abc6f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.ImageFileNameTextApplier.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.StatemachineDSLProposalProvider.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.StatemachineDSLProposalProvider.java._trace
new file mode 100644
index 0000000..3d4101b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/.StatemachineDSLProposalProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/ImageFileNameTextApplier.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/ImageFileNameTextApplier.java
new file mode 100644
index 0000000..8bd56b5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/ImageFileNameTextApplier.java
@@ -0,0 +1,46 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.contentassist;
+
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.osbp.fork.mihalis.opal.widgets.ImageSelectorDialog;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+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 ImageFileNameTextApplier extends ReplacementTextApplier {
+  private ContentAssistContext context;
+  
+  private String[] extensions;
+  
+  public ContentAssistContext setContext(final ContentAssistContext context) {
+    return this.context = context;
+  }
+  
+  public String[] setExtensions(final String[] fileExtensions) {
+    return this.extensions = fileExtensions;
+  }
+  
+  public String getActualReplacementString(final ConfigurableCompletionProposal proposal) {
+    ITextViewer _viewer = this.context.getViewer();
+    StyledText _textWidget = _viewer.getTextWidget();
+    Display display = _textWidget.getDisplay();
+    Shell shell = new Shell(display);
+    Point _point = new Point((display.getActiveShell().getLocation().x + 30), (display.getActiveShell().getLocation().y + 30));
+    shell.setLocation(_point);
+    FillLayout _fillLayout = new FillLayout();
+    shell.setLayout(_fillLayout);
+    ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(shell, 16);
+    imageSelectorDialog.setFilterExtensions(this.extensions);
+    String imageFileName = imageSelectorDialog.open(true);
+    String _concat = "\"".concat(imageFileName);
+    return _concat.concat("\"");
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.java
new file mode 100644
index 0000000..6a0d417
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/contentassist/StatemachineDSLProposalProvider.java
@@ -0,0 +1,73 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.contentassist;
+
+import com.google.common.base.Objects;
+import javax.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+import org.eclipse.osbp.xtext.statemachine.ui.contentassist.AbstractStatemachineDSLProposalProvider;
+import org.eclipse.osbp.xtext.statemachine.ui.contentassist.ImageFileNameTextApplier;
+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;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLProposalProvider extends AbstractStatemachineDSLProposalProvider {
+  @Inject
+  private TerminalsProposalProvider provider;
+  
+  @Inject
+  private BasicDSLProposalProviderHelper providerHelper;
+  
+  /**
+   * This override will enable 1 length non letter characters as keyword.
+   */
+  protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
+    return true;
+  }
+  
+  protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
+    boolean result = super.isValidProposal(proposal, prefix, context);
+    return result;
+  }
+  
+  public boolean isActionValidProposal(final EObject obj, final String proposal, final boolean result) {
+    return true;
+  }
+  
+  public void imageFilePickerProposal(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor, final String fileExtensions) {
+    ICompletionProposal _createCompletionProposal = this.createCompletionProposal("Select image file...", context);
+    ConfigurableCompletionProposal fileName = ((ConfigurableCompletionProposal) _createCompletionProposal);
+    boolean _notEquals = (!Objects.equal(fileName, null));
+    if (_notEquals) {
+      ImageFileNameTextApplier applier = new ImageFileNameTextApplier();
+      String[] _split = fileExtensions.split(",");
+      applier.setExtensions(_split);
+      applier.setContext(context);
+      fileName.setTextApplier(applier);
+    }
+    acceptor.accept(fileName);
+  }
+  
+  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_QualifiedNameWithWildcard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+  }
+  
+  public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_STRING(model, ruleCall, context, acceptor);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLDescriptionLabelProvider.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLDescriptionLabelProvider.java._trace
new file mode 100644
index 0000000..966a4d6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLDescriptionLabelProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLLabelProvider.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLLabelProvider.java._trace
new file mode 100644
index 0000000..5371fa4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/.StatemachineDSLLabelProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.java
new file mode 100644
index 0000000..bbe9f05
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLDescriptionLabelProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.java
new file mode 100644
index 0000000..07f984f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/labeling/StatemachineDSLLabelProvider.java
@@ -0,0 +1,21 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.labeling;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLLabelProvider extends DefaultEObjectLabelProvider {
+  @Inject
+  public StatemachineDSLLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/.StatemachineDSLOutlineTreeProvider.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/.StatemachineDSLOutlineTreeProvider.java._trace
new file mode 100644
index 0000000..1974872
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/.StatemachineDSLOutlineTreeProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.java
new file mode 100644
index 0000000..4c45ae5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/outline/StatemachineDSLOutlineTreeProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/.StatemachineDSLQuickfixProvider.java._trace b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/.StatemachineDSLQuickfixProvider.java._trace
new file mode 100644
index 0000000..95970b7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/.StatemachineDSLQuickfixProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.java
new file mode 100644
index 0000000..7a844af
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine.ui/xtend-gen/org/eclipse/osbp/xtext/statemachine/ui/quickfix/StatemachineDSLQuickfixProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+/**
+ * Custom quickfixes.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLQuickfixProvider extends DefaultQuickfixProvider {
+}
diff --git "a/org.eclipse.osbp.xtext.statemachine/.launch/Generate Language Infrastructure \050org.eclipse.osbp.xtext.statemachine\051.launch" "b/org.eclipse.osbp.xtext.statemachine/.launch/Generate Language Infrastructure \050org.eclipse.osbp.xtext.statemachine\051.launch"
new file mode 100644
index 0000000..fd6ee3c
--- /dev/null
+++ "b/org.eclipse.osbp.xtext.statemachine/.launch/Generate Language Infrastructure \050org.eclipse.osbp.xtext.statemachine\051.launch"
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;launchConfigurationWorkingSet factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1299248699643_13&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.osbp.xtext.statemachine&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.osbp.xtext.statemachine.generator&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.osbp.xtext.statemachine.tests&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.osbp.xtext.statemachine.ui&quot; type=&quot;4&quot;/&gt;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.xtext.statemachine"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/org/eclipse/osbp/xtext/statemachine/GenerateStatemachineDSL.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.xtext.statemachine"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.statemachine/.project b/org.eclipse.osbp.xtext.statemachine/.project
new file mode 100644
index 0000000..223999b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.statemachine</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.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.statemachine/LICENSE.txt b/org.eclipse.osbp.xtext.statemachine/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.statemachine/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2bb1842
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/META-INF/MANIFEST.MF
@@ -0,0 +1,103 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.statemachine
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.statemachine;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api,
+ org.apache.xerces;bundle-version="2.9.0",
+ org.eclipse.osgi.services;bundle-version="3.4.0",
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.apache.commons.logging;resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ 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.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib,
+ javax.persistence;bundle-version="2.1.0",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.e4.core.contexts;bundle-version="1.3.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.0.0",
+ org.eclipse.e4.core.services;bundle-version="1.1.0",
+ org.eclipse.emf.ecore.xcore,
+ org.eclipse.persistence.core;bundle-version="2.6.0",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.milyn.smooks.osgi;bundle-version="1.5.1",
+ org.eclipse.core.databinding,
+ org.eclipse.core.databinding.beans,
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver;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.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.preferences;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange.common;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.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";resolution:=optional,
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.eclipse.persistence.jpa;bundle-version="2.6.0",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.basic;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)",
+ org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="0.9.0",
+ org.eclipse.osbp.abstractstatemachine;bundle-version="0.9.0",
+ org.eclipse.osbp.fork.jpos;bundle-version="1.14.0",
+ org.eclipse.osbp.ecview.core.extension.model;bundle-version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="0.9.0",
+ org.eclipse.osbp.xtext.reportdsl;bundle-version="0.9.0"
+Import-Package: javax.transaction.xa;version="[1.0.1,2.0.0)",
+ javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.jdt.core,
+ org.eclipse.osbp.dsl.dto.lib.services;version="0.9.0",
+ org.eclipse.osbp.eventbroker;version="0.9.0",
+ org.eclipse.osbp.persistence;version="0.9.0",
+ org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0",
+ org.eclipse.osbp.ui.api.message;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.eclipse.osbp.ui.api.report;version="0.9.0",
+ org.eclipse.osbp.ui.api.statemachine;version="0.9.0",
+ org.eclipse.osbp.ui.api.themes;version="0.9.0",
+ org.eclipse.osbp.ui.api.user;version="0.9.0",
+ org.eclipse.osbp.utils.annotation;version="0.9.0",
+ org.eclipse.osbp.utils.constants;version="0.9.0",
+ org.eclipse.osbp.utils.entityhelper;version="0.9.0",
+ org.eclipse.osbp.utils.entitymock;version="0.9.0",
+ org.eclipse.osbp.utils.xtext;version="0.9.0",
+ org.eclipse.osbp.xtext.basic.generator;version="0.9.0";resolution:=optional,
+ org.eclipse.osbp.xtext.i18n;version="0.9.0",
+ org.joda.time;version="2.7.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.statemachine,
+ org.eclipse.osbp.xtext.statemachine.formatting,
+ org.eclipse.osbp.xtext.statemachine.impl,
+ org.eclipse.osbp.xtext.statemachine.jvmmodel,
+ org.eclipse.osbp.xtext.statemachine.parser.antlr,
+ org.eclipse.osbp.xtext.statemachine.parser.antlr.internal,
+ org.eclipse.osbp.xtext.statemachine.scoping,
+ org.eclipse.osbp.xtext.statemachine.serializer,
+ org.eclipse.osbp.xtext.statemachine.services,
+ org.eclipse.osbp.xtext.statemachine.util,
+ org.eclipse.osbp.xtext.statemachine.validation,
+ org.eclipse.osbp.xtext.statemachine.valueconverter
+Bundle-Activator: org.eclipse.osbp.xtext.statemachine.Activator
+
diff --git a/org.eclipse.osbp.xtext.statemachine/README.txt b/org.eclipse.osbp.xtext.statemachine/README.txt
new file mode 100644
index 0000000..68755a2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/README.txt
@@ -0,0 +1,16 @@
+Your code for xtext.statemachine goes in here.
+
+Add all your sources as you usually do for plugin development.
+
+If you need more bundles to implement the feature, duplicate this folder and ad the new bundle code into the copy
+
+Do not forget to add your new bundle to the 
+ - feature pom.xml
+ - feature feature.xml
+ - and the aggregator pom.xml
+as it is done for this bundle.
+
+Have fun!
+
+
+You can delete this file from the final project.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine/about.html b/org.eclipse.osbp.xtext.statemachine/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/about.ini b/org.eclipse.osbp.xtext.statemachine/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/about.mappings b/org.eclipse.osbp.xtext.statemachine/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/about.properties b/org.eclipse.osbp.xtext.statemachine/about.properties
new file mode 100644
index 0000000..645c452
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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:
+#    Loetz GmbH&Co - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=xtext.statemachine
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.statemachine/about_files/README.txt b/org.eclipse.osbp.xtext.statemachine/about_files/README.txt
new file mode 100644
index 0000000..cc50489
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/about_files/README.txt
@@ -0,0 +1 @@
+All external licenses referenced in about file go here
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine/build.properties b/org.eclipse.osbp.xtext.statemachine/build.properties
new file mode 100644
index 0000000..cc2223a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+          src-gen/,\
+          emf-gen/,\
+          xtend-gen/
+bin.includes = model/,\
+               META-INF/,\
+               .,\
+               plugin.xml,\
+               LICENSE.txt
+
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/Statemachine.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/Statemachine.java
new file mode 100644
index 0000000..33785e6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/Statemachine.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getFunctionGroup <em>Function Group</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialEvent <em>Initial Event</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialState <em>Initial State</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getEvents <em>Events</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getControls <em>Controls</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getStates <em>States</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine()
+ * @model
+ * @generated
+ */
+public interface Statemachine extends StatemachineBase {
+	/**
+	 * 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.statemachine.StatemachineDSLPackage#getStatemachine_Description()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#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.statemachine.StatemachineDSLPackage#getStatemachine_DescriptionValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDescriptionValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#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>Function Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Function Group</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Function Group</em>' reference.
+	 * @see #setFunctionGroup(FunctionLibraryStatemachineGroup)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_FunctionGroup()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryStatemachineGroup getFunctionGroup();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getFunctionGroup <em>Function Group</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Function Group</em>' reference.
+	 * @see #getFunctionGroup()
+	 * @generated
+	 */
+	void setFunctionGroup(FunctionLibraryStatemachineGroup value);
+
+	/**
+	 * Returns the value of the '<em><b>Initial Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Initial Event</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Initial Event</em>' reference.
+	 * @see #setInitialEvent(StatemachineEvent)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_InitialEvent()
+	 * @model
+	 * @generated
+	 */
+	StatemachineEvent getInitialEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialEvent <em>Initial Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Initial Event</em>' reference.
+	 * @see #getInitialEvent()
+	 * @generated
+	 */
+	void setInitialEvent(StatemachineEvent value);
+
+	/**
+	 * Returns the value of the '<em><b>Initial State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Initial State</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Initial State</em>' reference.
+	 * @see #setInitialState(StatemachineState)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_InitialState()
+	 * @model
+	 * @generated
+	 */
+	StatemachineState getInitialState();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialState <em>Initial State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Initial State</em>' reference.
+	 * @see #getInitialState()
+	 * @generated
+	 */
+	void setInitialState(StatemachineState value);
+
+	/**
+	 * Returns the value of the '<em><b>Events</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineEvent}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Events</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>Events</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_Events()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineEvent> getEvents();
+
+	/**
+	 * Returns the value of the '<em><b>Controls</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControl}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Controls</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>Controls</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_Controls()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControl> getControls();
+
+	/**
+	 * Returns the value of the '<em><b>States</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineState}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>States</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>States</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachine_States()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineState> getStates();
+
+} // Statemachine
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineAction.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineAction.java
new file mode 100644
index 0000000..22c82e6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineAction.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineAction()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachineAction extends StatemachineLazyResolver {
+} // StatemachineAction
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonCaption.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonCaption.java
new file mode 100644
index 0000000..27df4c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonCaption.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Button Caption</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getCaption <em>Caption</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonCaption()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionButtonCaption extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlButtonAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonCaption_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlButtonAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlButtonAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Caption</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Caption</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>Caption</em>' containment reference.
+	 * @see #setCaption(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonCaption_Caption()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getCaption();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getCaption <em>Caption</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Caption</em>' containment reference.
+	 * @see #getCaption()
+	 * @generated
+	 */
+	void setCaption(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionButtonCaption
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonImage.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonImage.java
new file mode 100644
index 0000000..c587e82
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionButtonImage.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Button Image</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getImage <em>Image</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonImage()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionButtonImage extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlButtonAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonImage_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlButtonAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlButtonAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Image</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Image</em>' attribute.
+	 * @see #setImage(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionButtonImage_Image()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getImage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getImage <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Image</em>' attribute.
+	 * @see #getImage()
+	 * @generated
+	 */
+	void setImage(String value);
+
+} // StatemachineActionButtonImage
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionConditionalTransition.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionConditionalTransition.java
new file mode 100644
index 0000000..f4659ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionConditionalTransition.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Conditional Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getTransition <em>Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getGuard <em>Guard</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionConditionalTransition()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionConditionalTransition extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Transition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transition</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Transition</em>' reference.
+	 * @see #setTransition(StatemachineState)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionConditionalTransition_Transition()
+	 * @model
+	 * @generated
+	 */
+	StatemachineState getTransition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getTransition <em>Transition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transition</em>' reference.
+	 * @see #getTransition()
+	 * @generated
+	 */
+	void setTransition(StatemachineState value);
+
+	/**
+	 * Returns the value of the '<em><b>Guard</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Guard</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>Guard</em>' containment reference.
+	 * @see #setGuard(StatemachineGuard)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionConditionalTransition_Guard()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineGuard getGuard();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getGuard <em>Guard</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Guard</em>' containment reference.
+	 * @see #getGuard()
+	 * @generated
+	 */
+	void setGuard(StatemachineGuard value);
+
+	/**
+	 * Returns the value of the '<em><b>Actions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineAction}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Actions</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>Actions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionConditionalTransition_Actions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineAction> getActions();
+
+} // StatemachineActionConditionalTransition
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionDTOFind.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionDTOFind.java
new file mode 100644
index 0000000..658fece
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionDTOFind.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action DTO Find</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getSearch <em>Search</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionDTOFind()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionDTOFind extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto</em>' reference.
+	 * @see #setDto(StatemachineControlDTOAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionDTOFind_Dto()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlDTOAttribute getDto();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getDto <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto</em>' reference.
+	 * @see #getDto()
+	 * @generated
+	 */
+	void setDto(StatemachineControlDTOAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(LDtoInheritedAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionDTOFind_Attribute()
+	 * @model
+	 * @generated
+	 */
+	LDtoInheritedAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(LDtoInheritedAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Search</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Search</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>Search</em>' containment reference.
+	 * @see #setSearch(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionDTOFind_Search()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getSearch();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getSearch <em>Search</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Search</em>' containment reference.
+	 * @see #getSearch()
+	 * @generated
+	 */
+	void setSearch(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionDTOFind
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldClear.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldClear.java
new file mode 100644
index 0000000..abeab50
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldClear.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Clear</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldClear()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldClear extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldClear_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlFieldAttribute value);
+
+} // StatemachineActionFieldClear
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldConcatenation.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldConcatenation.java
new file mode 100644
index 0000000..15175b6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldConcatenation.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Concatenation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldConcatenation()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldConcatenation extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>First</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>First</em>' containment reference.
+	 * @see #setFirst(StatemachineActionFieldSource)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldConcatenation_First()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldSource getFirst();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getFirst <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>First</em>' containment reference.
+	 * @see #getFirst()
+	 * @generated
+	 */
+	void setFirst(StatemachineActionFieldSource value);
+
+	/**
+	 * Returns the value of the '<em><b>More</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>More</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>More</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldConcatenation_More()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineActionFieldSource> getMore();
+
+} // StatemachineActionFieldConcatenation
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldGet.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldGet.java
new file mode 100644
index 0000000..960e41f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldGet.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Get</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldGet()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldGet extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldGet_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlFieldAttribute value);
+
+} // StatemachineActionFieldGet
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldKeystroke.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldKeystroke.java
new file mode 100644
index 0000000..c023f01
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldKeystroke.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Keystroke</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getKeystroke <em>Keystroke</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldKeystroke()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldKeystroke extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldKeystroke_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlFieldAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Keystroke</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Keystroke</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Keystroke</em>' attribute.
+	 * @see #setKeystroke(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldKeystroke_Keystroke()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getKeystroke();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getKeystroke <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Keystroke</em>' attribute.
+	 * @see #getKeystroke()
+	 * @generated
+	 */
+	void setKeystroke(String value);
+
+} // StatemachineActionFieldKeystroke
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldRemove.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldRemove.java
new file mode 100644
index 0000000..790f4dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldRemove.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Remove</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldRemove()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldRemove extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldRemove_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlFieldAttribute value);
+
+} // StatemachineActionFieldRemove
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSet.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSet.java
new file mode 100644
index 0000000..40b6553
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSet.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Set</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSet()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSet extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSet_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlFieldAttribute 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(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSet_Source()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#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(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionFieldSet
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSource.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSource.java
new file mode 100644
index 0000000..12e048c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSource.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSource()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachineActionFieldSource extends StatemachineAction {
+} // StatemachineActionFieldSource
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceDtoAttribute.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceDtoAttribute.java
new file mode 100644
index 0000000..cae2fa6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceDtoAttribute.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source Dto Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceDtoAttribute()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceDtoAttribute extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto</em>' reference.
+	 * @see #setDto(StatemachineControlDTOAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceDtoAttribute_Dto()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlDTOAttribute getDto();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getDto <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto</em>' reference.
+	 * @see #getDto()
+	 * @generated
+	 */
+	void setDto(StatemachineControlDTOAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(LDtoInheritedAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceDtoAttribute_Attribute()
+	 * @model
+	 * @generated
+	 */
+	LDtoInheritedAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(LDtoInheritedAttribute value);
+
+} // StatemachineActionFieldSourceDtoAttribute
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvaluate.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvaluate.java
new file mode 100644
index 0000000..26827c6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvaluate.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source Evaluate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate#getEvaluationtype <em>Evaluationtype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceEvaluate()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceEvaluate extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Evaluationtype</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evaluationtype</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Evaluationtype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType
+	 * @see #setEvaluationtype(StatemachineEvaluationType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceEvaluate_Evaluationtype()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineEvaluationType getEvaluationtype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate#getEvaluationtype <em>Evaluationtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Evaluationtype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType
+	 * @see #getEvaluationtype()
+	 * @generated
+	 */
+	void setEvaluationtype(StatemachineEvaluationType value);
+
+} // StatemachineActionFieldSourceEvaluate
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvent.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvent.java
new file mode 100644
index 0000000..6178075
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceEvent.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceEvent()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceEvent extends StatemachineActionFieldSource {
+} // StatemachineActionFieldSourceEvent
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceNumber.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceNumber.java
new file mode 100644
index 0000000..a5cc77b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceNumber.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source Number</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceNumber()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceNumber extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(Double)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceNumber_Value()
+	 * @model unique="false"
+	 * @generated
+	 */
+	Double getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(Double value);
+
+} // StatemachineActionFieldSourceNumber
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceString.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceString.java
new file mode 100644
index 0000000..91cea12
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceString.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source String</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceString()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceString extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Text</em>' attribute.
+	 * @see #setText(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceString_Text()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString#getText <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' attribute.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(String value);
+
+} // StatemachineActionFieldSourceString
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceTranslate.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceTranslate.java
new file mode 100644
index 0000000..347683b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionFieldSourceTranslate.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Field Source Translate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceTranslate()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionFieldSourceTranslate extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Text</em>' attribute.
+	 * @see #setText(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionFieldSourceTranslate_Text()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate#getText <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' attribute.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(String value);
+
+} // StatemachineActionFieldSourceTranslate
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemInvisible.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemInvisible.java
new file mode 100644
index 0000000..4c55a17
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemInvisible.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Item Invisible</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionItemInvisible()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionItemInvisible extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlVisibility)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionItemInvisible_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlVisibility getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlVisibility value);
+
+} // StatemachineActionItemInvisible
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemVisible.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemVisible.java
new file mode 100644
index 0000000..dbaef95
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionItemVisible.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Item Visible</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionItemVisible()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionItemVisible extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(StatemachineControlVisibility)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionItemVisible_Attribute()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlVisibility getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(StatemachineControlVisibility value);
+
+} // StatemachineActionItemVisible
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralBlinkRate.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralBlinkRate.java
new file mode 100644
index 0000000..adf315a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralBlinkRate.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Blink Rate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getBlinkRate <em>Blink Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralBlinkRate()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralBlinkRate extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralBlinkRate_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Blink Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Blink Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Blink Rate</em>' attribute.
+	 * @see #setBlinkRate(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralBlinkRate_BlinkRate()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBlinkRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getBlinkRate <em>Blink Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Blink Rate</em>' attribute.
+	 * @see #getBlinkRate()
+	 * @generated
+	 */
+	void setBlinkRate(int value);
+
+} // StatemachineActionPeripheralBlinkRate
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralClear.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralClear.java
new file mode 100644
index 0000000..7ff1574
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralClear.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Clear</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralClear()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralClear extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralClear_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+} // StatemachineActionPeripheralClear
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCreateWindow.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCreateWindow.java
new file mode 100644
index 0000000..ddec05f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCreateWindow.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Create Window</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportRow <em>Viewport Row</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportColumn <em>Viewport Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportHeight <em>Viewport Height</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportWidth <em>Viewport Width</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowHeight <em>Window Height</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowWidth <em>Window Width</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralCreateWindow extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Viewport Row</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Viewport Row</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Viewport Row</em>' attribute.
+	 * @see #setViewportRow(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_ViewportRow()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getViewportRow();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportRow <em>Viewport Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Viewport Row</em>' attribute.
+	 * @see #getViewportRow()
+	 * @generated
+	 */
+	void setViewportRow(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Viewport Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Viewport Column</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Viewport Column</em>' attribute.
+	 * @see #setViewportColumn(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_ViewportColumn()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getViewportColumn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportColumn <em>Viewport Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Viewport Column</em>' attribute.
+	 * @see #getViewportColumn()
+	 * @generated
+	 */
+	void setViewportColumn(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Viewport Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Viewport Height</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Viewport Height</em>' attribute.
+	 * @see #setViewportHeight(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_ViewportHeight()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getViewportHeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportHeight <em>Viewport Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Viewport Height</em>' attribute.
+	 * @see #getViewportHeight()
+	 * @generated
+	 */
+	void setViewportHeight(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Viewport Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Viewport Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Viewport Width</em>' attribute.
+	 * @see #setViewportWidth(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_ViewportWidth()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getViewportWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportWidth <em>Viewport Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Viewport Width</em>' attribute.
+	 * @see #getViewportWidth()
+	 * @generated
+	 */
+	void setViewportWidth(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Window Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Window Height</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Window Height</em>' attribute.
+	 * @see #setWindowHeight(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_WindowHeight()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getWindowHeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowHeight <em>Window Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Window Height</em>' attribute.
+	 * @see #getWindowHeight()
+	 * @generated
+	 */
+	void setWindowHeight(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Window Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Window Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Window Width</em>' attribute.
+	 * @see #setWindowWidth(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCreateWindow_WindowWidth()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getWindowWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowWidth <em>Window Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Window Width</em>' attribute.
+	 * @see #getWindowWidth()
+	 * @generated
+	 */
+	void setWindowWidth(int value);
+
+} // StatemachineActionPeripheralCreateWindow
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCursorType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCursorType.java
new file mode 100644
index 0000000..e7a54cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralCursorType.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Cursor Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getCursorType <em>Cursor Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCursorType()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralCursorType extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCursorType_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Cursor Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cursor 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>Cursor Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType
+	 * @see #setCursorType(StatemachineLineDisplayCursorType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralCursorType_CursorType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayCursorType getCursorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getCursorType <em>Cursor Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cursor Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType
+	 * @see #getCursorType()
+	 * @generated
+	 */
+	void setCursorType(StatemachineLineDisplayCursorType value);
+
+} // StatemachineActionPeripheralCursorType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDestroyWindow.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDestroyWindow.java
new file mode 100644
index 0000000..dcededd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDestroyWindow.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Destroy Window</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDestroyWindow()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralDestroyWindow extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDestroyWindow_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+} // StatemachineActionPeripheralDestroyWindow
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDeviceBrightness.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDeviceBrightness.java
new file mode 100644
index 0000000..0e5a16d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDeviceBrightness.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Device Brightness</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getBrightness <em>Brightness</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDeviceBrightness()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralDeviceBrightness extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDeviceBrightness_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Brightness</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Brightness</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Brightness</em>' attribute.
+	 * @see #setBrightness(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDeviceBrightness_Brightness()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBrightness();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getBrightness <em>Brightness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Brightness</em>' attribute.
+	 * @see #getBrightness()
+	 * @generated
+	 */
+	void setBrightness(int value);
+
+} // StatemachineActionPeripheralDeviceBrightness
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayBitmap.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayBitmap.java
new file mode 100644
index 0000000..c5f4a8c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayBitmap.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Display Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getBitmapId <em>Bitmap Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayBitmap()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralDisplayBitmap extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayBitmap_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bitmap Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #setBitmapId(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayBitmap_BitmapId()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBitmapId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getBitmapId <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #getBitmapId()
+	 * @generated
+	 */
+	void setBitmapId(int value);
+
+} // StatemachineActionPeripheralDisplayBitmap
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayText.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayText.java
new file mode 100644
index 0000000..d021b5f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayText.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Display Text</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#isHasType <em>Has Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getTextType <em>Text Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayText()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralDisplayText extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayText_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</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>Text</em>' containment reference.
+	 * @see #setText(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayText_Text()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getText <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' containment reference.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has 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>Has Type</em>' attribute.
+	 * @see #setHasType(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayText_HasType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#isHasType <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Type</em>' attribute.
+	 * @see #isHasType()
+	 * @generated
+	 */
+	void setHasType(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Text Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text 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>Text Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @see #setTextType(StatemachineLineDisplayTextType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayText_TextType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayTextType getTextType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getTextType <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @see #getTextType()
+	 * @generated
+	 */
+	void setTextType(StatemachineLineDisplayTextType value);
+
+} // StatemachineActionPeripheralDisplayText
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayTextAt.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayTextAt.java
new file mode 100644
index 0000000..96c6abb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralDisplayTextAt.java
@@ -0,0 +1,198 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Display Text At</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getRow <em>Row</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getColumn <em>Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#isHasType <em>Has Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getTextType <em>Text Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralDisplayTextAt extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Row</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Row</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Row</em>' attribute.
+	 * @see #setRow(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_Row()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getRow();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getRow <em>Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Row</em>' attribute.
+	 * @see #getRow()
+	 * @generated
+	 */
+	void setRow(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Column</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Column</em>' attribute.
+	 * @see #setColumn(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_Column()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getColumn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getColumn <em>Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Column</em>' attribute.
+	 * @see #getColumn()
+	 * @generated
+	 */
+	void setColumn(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</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>Text</em>' containment reference.
+	 * @see #setText(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_Text()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getText <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' containment reference.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has 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>Has Type</em>' attribute.
+	 * @see #setHasType(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_HasType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#isHasType <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Type</em>' attribute.
+	 * @see #isHasType()
+	 * @generated
+	 */
+	void setHasType(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Text Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text 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>Text Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @see #setTextType(StatemachineLineDisplayTextType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralDisplayTextAt_TextType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayTextType getTextType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getTextType <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @see #getTextType()
+	 * @generated
+	 */
+	void setTextType(StatemachineLineDisplayTextType value);
+
+} // StatemachineActionPeripheralDisplayTextAt
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralInterCharacterWait.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralInterCharacterWait.java
new file mode 100644
index 0000000..0796518
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralInterCharacterWait.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Inter Character Wait</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralInterCharacterWait()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralInterCharacterWait extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralInterCharacterWait_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wait</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wait</em>' attribute.
+	 * @see #setWait(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralInterCharacterWait_Wait()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getWait();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getWait <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wait</em>' attribute.
+	 * @see #getWait()
+	 * @generated
+	 */
+	void setWait(int value);
+
+} // StatemachineActionPeripheralInterCharacterWait
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeFormat.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeFormat.java
new file mode 100644
index 0000000..8ab749a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeFormat.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Marquee Format</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getFormat <em>Format</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeFormat()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralMarqueeFormat extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeFormat_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Format</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Format</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Format</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat
+	 * @see #setFormat(StatemachineLineDisplayMarqueeFormat)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeFormat_Format()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayMarqueeFormat getFormat();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getFormat <em>Format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Format</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat
+	 * @see #getFormat()
+	 * @generated
+	 */
+	void setFormat(StatemachineLineDisplayMarqueeFormat value);
+
+} // StatemachineActionPeripheralMarqueeFormat
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeRepeatWait.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeRepeatWait.java
new file mode 100644
index 0000000..6c33aa3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeRepeatWait.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Marquee Repeat Wait</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeRepeatWait()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralMarqueeRepeatWait extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeRepeatWait_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wait</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wait</em>' attribute.
+	 * @see #setWait(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeRepeatWait_Wait()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getWait();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getWait <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wait</em>' attribute.
+	 * @see #getWait()
+	 * @generated
+	 */
+	void setWait(int value);
+
+} // StatemachineActionPeripheralMarqueeRepeatWait
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeType.java
new file mode 100644
index 0000000..40bf1ac
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeType.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Marquee Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getMarqueeType <em>Marquee Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeType()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralMarqueeType extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeType_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Marquee Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Marquee 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>Marquee Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType
+	 * @see #setMarqueeType(StatemachineLineDisplayMarqueeType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeType_MarqueeType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayMarqueeType getMarqueeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getMarqueeType <em>Marquee Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Marquee Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType
+	 * @see #getMarqueeType()
+	 * @generated
+	 */
+	void setMarqueeType(StatemachineLineDisplayMarqueeType value);
+
+} // StatemachineActionPeripheralMarqueeType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeUnitWait.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeUnitWait.java
new file mode 100644
index 0000000..fa0fbed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralMarqueeUnitWait.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Marquee Unit Wait</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeUnitWait()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralMarqueeUnitWait extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeUnitWait_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wait</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wait</em>' attribute.
+	 * @see #setWait(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralMarqueeUnitWait_Wait()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getWait();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getWait <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wait</em>' attribute.
+	 * @see #getWait()
+	 * @generated
+	 */
+	void setWait(int value);
+
+} // StatemachineActionPeripheralMarqueeUnitWait
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralOpenDrawer.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralOpenDrawer.java
new file mode 100644
index 0000000..f86f5b4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralOpenDrawer.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Open Drawer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralOpenDrawer()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralOpenDrawer extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceCashDrawer)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralOpenDrawer_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceCashDrawer getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceCashDrawer value);
+
+} // StatemachineActionPeripheralOpenDrawer
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAcknowledge.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAcknowledge.java
new file mode 100644
index 0000000..12e1d57
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAcknowledge.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Acknowledge</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTAcknowledge()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTAcknowledge extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTAcknowledge_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+} // StatemachineActionPeripheralPTAcknowledge
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAuthorization.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAuthorization.java
new file mode 100644
index 0000000..71fdd7d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTAuthorization.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Authorization</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getAmount <em>Amount</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTAuthorization()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTAuthorization extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTAuthorization_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+	/**
+	 * Returns the value of the '<em><b>Amount</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Amount</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>Amount</em>' containment reference.
+	 * @see #setAmount(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTAuthorization_Amount()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getAmount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getAmount <em>Amount</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Amount</em>' containment reference.
+	 * @see #getAmount()
+	 * @generated
+	 */
+	void setAmount(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionPeripheralPTAuthorization
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTClose.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTClose.java
new file mode 100644
index 0000000..51951cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTClose.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Close</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTClose()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTClose extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTClose_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+} // StatemachineActionPeripheralPTClose
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTOpen.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTOpen.java
new file mode 100644
index 0000000..0b3e297
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTOpen.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Open</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getHost <em>Host</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getPort <em>Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTOpen()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTOpen extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTOpen_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+	/**
+	 * Returns the value of the '<em><b>Host</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Host</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>Host</em>' containment reference.
+	 * @see #setHost(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTOpen_Host()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getHost();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getHost <em>Host</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Host</em>' containment reference.
+	 * @see #getHost()
+	 * @generated
+	 */
+	void setHost(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Port</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Port</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>Port</em>' containment reference.
+	 * @see #setPort(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTOpen_Port()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getPort();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getPort <em>Port</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Port</em>' containment reference.
+	 * @see #getPort()
+	 * @generated
+	 */
+	void setPort(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionPeripheralPTOpen
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTRegistration.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTRegistration.java
new file mode 100644
index 0000000..5ee80ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTRegistration.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Registration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getPassword <em>Password</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getConfiguration <em>Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTRegistration()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTRegistration extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTRegistration_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+	/**
+	 * Returns the value of the '<em><b>Password</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Password</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>Password</em>' containment reference.
+	 * @see #setPassword(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTRegistration_Password()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getPassword();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getPassword <em>Password</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Password</em>' containment reference.
+	 * @see #getPassword()
+	 * @generated
+	 */
+	void setPassword(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Configuration</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Configuration</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Configuration</em>' attribute.
+	 * @see #setConfiguration(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTRegistration_Configuration()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getConfiguration();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getConfiguration <em>Configuration</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Configuration</em>' attribute.
+	 * @see #getConfiguration()
+	 * @generated
+	 */
+	void setConfiguration(String value);
+
+} // StatemachineActionPeripheralPTRegistration
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTResponse.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTResponse.java
new file mode 100644
index 0000000..a5fa8e6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTResponse.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Response</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTResponse()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTResponse extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTResponse_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+} // StatemachineActionPeripheralPTResponse
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTReversal.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTReversal.java
new file mode 100644
index 0000000..679ce24
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPTReversal.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral PT Reversal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getPassword <em>Password</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getReceipt <em>Receipt</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTReversal()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPTReversal extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePT)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTReversal_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePT value);
+
+	/**
+	 * Returns the value of the '<em><b>Password</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Password</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>Password</em>' containment reference.
+	 * @see #setPassword(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTReversal_Password()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getPassword();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getPassword <em>Password</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Password</em>' containment reference.
+	 * @see #getPassword()
+	 * @generated
+	 */
+	void setPassword(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Receipt</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Receipt</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>Receipt</em>' containment reference.
+	 * @see #setReceipt(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPTReversal_Receipt()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getReceipt();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getReceipt <em>Receipt</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Receipt</em>' containment reference.
+	 * @see #getReceipt()
+	 * @generated
+	 */
+	void setReceipt(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionPeripheralPTReversal
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBarcode.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBarcode.java
new file mode 100644
index 0000000..ac1e35a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBarcode.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Barcode</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getBarcodeType <em>Barcode Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBarcode()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintBarcode extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePOSPrinter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBarcode_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePOSPrinter value);
+
+	/**
+	 * Returns the value of the '<em><b>Data</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Data</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Data</em>' attribute.
+	 * @see #setData(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBarcode_Data()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getData();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getData <em>Data</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Data</em>' attribute.
+	 * @see #getData()
+	 * @generated
+	 */
+	void setData(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Barcode Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Barcode 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>Barcode Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @see #setBarcodeType(StatemachinePOSPrinterBarcodeType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBarcode_BarcodeType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachinePOSPrinterBarcodeType getBarcodeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getBarcodeType <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Barcode Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @see #getBarcodeType()
+	 * @generated
+	 */
+	void setBarcodeType(StatemachinePOSPrinterBarcodeType value);
+
+} // StatemachineActionPeripheralPrintBarcode
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBitmap.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBitmap.java
new file mode 100644
index 0000000..346250e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintBitmap.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getBitmapId <em>Bitmap Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBitmap()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintBitmap extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePOSPrinter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBitmap_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePOSPrinter value);
+
+	/**
+	 * Returns the value of the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bitmap Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #setBitmapId(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintBitmap_BitmapId()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBitmapId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getBitmapId <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #getBitmapId()
+	 * @generated
+	 */
+	void setBitmapId(int value);
+
+} // StatemachineActionPeripheralPrintBitmap
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintCut.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintCut.java
new file mode 100644
index 0000000..5f9a371
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintCut.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Cut</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintCut()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintCut extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePOSPrinter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintCut_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePOSPrinter value);
+
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</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>Text</em>' containment reference.
+	 * @see #setText(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintCut_Text()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getText <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' containment reference.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(StatemachineActionFieldConcatenation value);
+
+} // StatemachineActionPeripheralPrintCut
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintNormal.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintNormal.java
new file mode 100644
index 0000000..5137d0e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintNormal.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getBarcodeType <em>Barcode Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintNormal()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintNormal extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePOSPrinter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintNormal_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePOSPrinter value);
+
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</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>Text</em>' containment reference.
+	 * @see #setText(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintNormal_Text()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getText <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Text</em>' containment reference.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(StatemachineActionFieldConcatenation value);
+
+	/**
+	 * Returns the value of the '<em><b>Barcode Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Barcode 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>Barcode Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @see #setBarcodeType(StatemachinePOSPrinterBarcodeType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintNormal_BarcodeType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachinePOSPrinterBarcodeType getBarcodeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getBarcodeType <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Barcode Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @see #getBarcodeType()
+	 * @generated
+	 */
+	void setBarcodeType(StatemachinePOSPrinterBarcodeType value);
+
+} // StatemachineActionPeripheralPrintNormal
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintRegisterBitmap.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintRegisterBitmap.java
new file mode 100644
index 0000000..256dc95
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintRegisterBitmap.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Register Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getBitmapId <em>Bitmap Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintRegisterBitmap()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintRegisterBitmap extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDevicePOSPrinter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintRegisterBitmap_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDevicePOSPrinter value);
+
+	/**
+	 * Returns the value of the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bitmap Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #setBitmapId(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintRegisterBitmap_BitmapId()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBitmapId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getBitmapId <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bitmap Id</em>' attribute.
+	 * @see #getBitmapId()
+	 * @generated
+	 */
+	void setBitmapId(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintRegisterBitmap_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#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);
+
+} // StatemachineActionPeripheralPrintRegisterBitmap
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintReport.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintReport.java
new file mode 100644
index 0000000..90fcd85
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralPrintReport.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.xtext.reportdsl.Report;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Print Report</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getReport <em>Report</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#isHasFilter <em>Has Filter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintReport()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralPrintReport extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Report</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Report</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Report</em>' reference.
+	 * @see #setReport(Report)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintReport_Report()
+	 * @model
+	 * @generated
+	 */
+	Report getReport();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getReport <em>Report</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Report</em>' reference.
+	 * @see #getReport()
+	 * @generated
+	 */
+	void setReport(Report value);
+
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' reference.
+	 * @see #setKey(StatemachineStorage)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintReport_Key()
+	 * @model
+	 * @generated
+	 */
+	StatemachineStorage getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getKey <em>Key</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' reference.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(StatemachineStorage value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Filter</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Filter</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 Filter</em>' attribute.
+	 * @see #setHasFilter(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralPrintReport_HasFilter()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasFilter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#isHasFilter <em>Has Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Filter</em>' attribute.
+	 * @see #isHasFilter()
+	 * @generated
+	 */
+	void setHasFilter(boolean value);
+
+} // StatemachineActionPeripheralPrintReport
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralScroll.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralScroll.java
new file mode 100644
index 0000000..6fda8db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionPeripheralScroll.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Peripheral Scroll</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDirection <em>Direction</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getUnits <em>Units</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralScroll()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionPeripheralScroll extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(StatemachinePeripheralDeviceLineDisplay)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralScroll_Device()
+	 * @model
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(StatemachinePeripheralDeviceLineDisplay value);
+
+	/**
+	 * Returns the value of the '<em><b>Direction</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Direction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Direction</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType
+	 * @see #setDirection(StatemachineLineDisplayScrollTextType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralScroll_Direction()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineLineDisplayScrollTextType getDirection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDirection <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Direction</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType
+	 * @see #getDirection()
+	 * @generated
+	 */
+	void setDirection(StatemachineLineDisplayScrollTextType value);
+
+	/**
+	 * Returns the value of the '<em><b>Units</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Units</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Units</em>' attribute.
+	 * @see #setUnits(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionPeripheralScroll_Units()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getUnits();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getUnits <em>Units</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Units</em>' attribute.
+	 * @see #getUnits()
+	 * @generated
+	 */
+	void setUnits(int value);
+
+} // StatemachineActionPeripheralScroll
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionScheduler.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionScheduler.java
new file mode 100644
index 0000000..ab36e62
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineActionScheduler.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Action Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler#getScheduler <em>Scheduler</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionScheduler()
+ * @model
+ * @generated
+ */
+public interface StatemachineActionScheduler extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Scheduler</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scheduler</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scheduler</em>' reference.
+	 * @see #setScheduler(StatemachineControlSchedulerAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineActionScheduler_Scheduler()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlSchedulerAttribute getScheduler();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler#getScheduler <em>Scheduler</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scheduler</em>' reference.
+	 * @see #getScheduler()
+	 * @generated
+	 */
+	void setScheduler(StatemachineControlSchedulerAttribute value);
+
+} // StatemachineActionScheduler
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineBase.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineBase.java
new file mode 100644
index 0000000..4bd0a6c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineBase.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Base</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineBase#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineBase()
+ * @model
+ * @generated
+ */
+public interface StatemachineBase extends StatemachineLazyResolver {
+	/**
+	 * 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.statemachine.StatemachineDSLPackage#getStatemachineBase_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineBase#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);
+
+} // StatemachineBase
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControl.java
new file mode 100644
index 0000000..cde0629
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControl.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControl()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachineControl extends StatemachineBase {
+} // StatemachineControl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButton.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButton.java
new file mode 100644
index 0000000..635f079
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButton.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getEventType <em>Event Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getButtons <em>Buttons</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButton()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlButton extends StatemachineControl, StatemachineControlVisibility {
+	/**
+	 * Returns the value of the '<em><b>Event Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Event 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>Event Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType
+	 * @see #setEventType(StatemachineControlButtonEventType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButton_EventType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineControlButtonEventType getEventType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getEventType <em>Event Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Event Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType
+	 * @see #getEventType()
+	 * @generated
+	 */
+	void setEventType(StatemachineControlButtonEventType value);
+
+	/**
+	 * Returns the value of the '<em><b>Buttons</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Buttons</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>Buttons</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButton_Buttons()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControlButtonAttribute> getButtons();
+
+} // StatemachineControlButton
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttribute.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttribute.java
new file mode 100644
index 0000000..329b22f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttribute.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#isHasImage <em>Has Image</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getImage <em>Image</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttribute()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlButtonAttribute extends StatemachineControlVisibility {
+	/**
+	 * Returns the value of the '<em><b>Has Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Image</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 Image</em>' attribute.
+	 * @see #setHasImage(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttribute_HasImage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasImage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#isHasImage <em>Has Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Image</em>' attribute.
+	 * @see #isHasImage()
+	 * @generated
+	 */
+	void setHasImage(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Image</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Image</em>' attribute.
+	 * @see #setImage(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttribute_Image()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getImage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getImage <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Image</em>' attribute.
+	 * @see #getImage()
+	 * @generated
+	 */
+	void setImage(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Event</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>Event</em>' containment reference.
+	 * @see #setEvent(StatemachineControlButtonAttributeEvent)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttribute_Event()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineControlButtonAttributeEvent getEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getEvent <em>Event</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Event</em>' containment reference.
+	 * @see #getEvent()
+	 * @generated
+	 */
+	void setEvent(StatemachineControlButtonAttributeEvent value);
+
+} // StatemachineControlButtonAttribute
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEvent.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEvent.java
new file mode 100644
index 0000000..743a1f5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEvent.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button Attribute Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEvent()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachineControlButtonAttributeEvent extends StatemachineLazyResolver {
+} // StatemachineControlButtonAttributeEvent
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventEvent.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventEvent.java
new file mode 100644
index 0000000..6d58e9b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventEvent.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button Attribute Event Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventEvent()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlButtonAttributeEventEvent extends StatemachineControlButtonAttributeEvent {
+	/**
+	 * Returns the value of the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Event</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Event</em>' reference.
+	 * @see #setEvent(StatemachineEvent)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventEvent_Event()
+	 * @model
+	 * @generated
+	 */
+	StatemachineEvent getEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent#getEvent <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Event</em>' reference.
+	 * @see #getEvent()
+	 * @generated
+	 */
+	void setEvent(StatemachineEvent value);
+
+} // StatemachineControlButtonAttributeEventEvent
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventIdentity.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventIdentity.java
new file mode 100644
index 0000000..1a2a731
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventIdentity.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button Attribute Event Identity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity#getIdentity <em>Identity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventIdentity()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlButtonAttributeEventIdentity extends StatemachineControlButtonAttributeEvent {
+	/**
+	 * Returns the value of the '<em><b>Identity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Identity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Identity</em>' attribute.
+	 * @see #setIdentity(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventIdentity_Identity()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getIdentity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity#getIdentity <em>Identity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Identity</em>' attribute.
+	 * @see #getIdentity()
+	 * @generated
+	 */
+	void setIdentity(int value);
+
+} // StatemachineControlButtonAttributeEventIdentity
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventKeyboard.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventKeyboard.java
new file mode 100644
index 0000000..b68f20b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonAttributeEventKeyboard.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Button Attribute Event Keyboard</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard#getKeystroke <em>Keystroke</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventKeyboard()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlButtonAttributeEventKeyboard extends StatemachineControlButtonAttributeEvent {
+	/**
+	 * Returns the value of the '<em><b>Keystroke</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Keystroke</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Keystroke</em>' attribute.
+	 * @see #setKeystroke(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonAttributeEventKeyboard_Keystroke()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getKeystroke();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard#getKeystroke <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Keystroke</em>' attribute.
+	 * @see #getKeystroke()
+	 * @generated
+	 */
+	void setKeystroke(String value);
+
+} // StatemachineControlButtonAttributeEventKeyboard
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonEventType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonEventType.java
new file mode 100644
index 0000000..3c747a1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlButtonEventType.java
@@ -0,0 +1,244 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Control Button Event Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlButtonEventType()
+ * @model
+ * @generated
+ */
+public enum StatemachineControlButtonEventType implements Enumerator {
+	/**
+	 * The '<em><b>KEYBOARD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #KEYBOARD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	KEYBOARD(0, "KEYBOARD", "keyboard"),
+
+	/**
+	 * The '<em><b>TRIGGER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TRIGGER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TRIGGER(0, "TRIGGER", "trigger"),
+
+	/**
+	 * The '<em><b>IDENTITY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IDENTITY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IDENTITY(0, "IDENTITY", "identity");
+
+	/**
+	 * The '<em><b>KEYBOARD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>KEYBOARD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #KEYBOARD
+	 * @model literal="keyboard"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int KEYBOARD_VALUE = 0;
+
+	/**
+	 * The '<em><b>TRIGGER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TRIGGER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TRIGGER
+	 * @model literal="trigger"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TRIGGER_VALUE = 0;
+
+	/**
+	 * The '<em><b>IDENTITY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IDENTITY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IDENTITY
+	 * @model literal="identity"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IDENTITY_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Control Button Event Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineControlButtonEventType[] VALUES_ARRAY =
+		new StatemachineControlButtonEventType[] {
+			KEYBOARD,
+			TRIGGER,
+			IDENTITY,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Control Button Event Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineControlButtonEventType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Control Button Event Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineControlButtonEventType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineControlButtonEventType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Control Button Event Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineControlButtonEventType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineControlButtonEventType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Control Button Event Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineControlButtonEventType get(int value) {
+		switch (value) {
+			case KEYBOARD_VALUE: return KEYBOARD;
+		}
+		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 StatemachineControlButtonEventType(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;
+	}
+	
+} //StatemachineControlButtonEventType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTO.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTO.java
new file mode 100644
index 0000000..b3618d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTO.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control DTO</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO#getDtos <em>Dtos</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTO()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlDTO extends StatemachineControl {
+	/**
+	 * Returns the value of the '<em><b>Dtos</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dtos</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>Dtos</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTO_Dtos()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControlDTOAttribute> getDtos();
+
+} // StatemachineControlDTO
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTOAttribute.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTOAttribute.java
new file mode 100644
index 0000000..dfa9f9a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlDTOAttribute.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control DTO Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getAttributeType <em>Attribute Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#isHasEvent <em>Has Event</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTOAttribute()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlDTOAttribute extends StatemachineBase {
+	/**
+	 * Returns the value of the '<em><b>Attribute Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute Type</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute Type</em>' containment reference.
+	 * @see #setAttributeType(StatemachineDTOType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTOAttribute_AttributeType()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineDTOType getAttributeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getAttributeType <em>Attribute Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute Type</em>' containment reference.
+	 * @see #getAttributeType()
+	 * @generated
+	 */
+	void setAttributeType(StatemachineDTOType value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Event</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Event</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 Event</em>' attribute.
+	 * @see #setHasEvent(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTOAttribute_HasEvent()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#isHasEvent <em>Has Event</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Event</em>' attribute.
+	 * @see #isHasEvent()
+	 * @generated
+	 */
+	void setHasEvent(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Event</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Event</em>' reference.
+	 * @see #setEvent(StatemachineEvent)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlDTOAttribute_Event()
+	 * @model
+	 * @generated
+	 */
+	StatemachineEvent getEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getEvent <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Event</em>' reference.
+	 * @see #getEvent()
+	 * @generated
+	 */
+	void setEvent(StatemachineEvent value);
+
+} // StatemachineControlDTOAttribute
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlField.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlField.java
new file mode 100644
index 0000000..0d2097f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlField.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Field</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getFields <em>Fields</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getLayouts <em>Layouts</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlField()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlField extends StatemachineControl {
+	/**
+	 * Returns the value of the '<em><b>Fields</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fields</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>Fields</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlField_Fields()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControlFieldAttribute> getFields();
+
+	/**
+	 * Returns the value of the '<em><b>Layouts</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layouts</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>Layouts</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlField_Layouts()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControlFieldLayout> getLayouts();
+
+} // StatemachineControlField
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldAttribute.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldAttribute.java
new file mode 100644
index 0000000..d3d6823
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldAttribute.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Field Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlFieldAttribute()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlFieldAttribute extends StatemachineControlVisibility {
+	/**
+	 * Returns the value of the '<em><b>Attribute Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute Type</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute Type</em>' containment reference.
+	 * @see #setAttributeType(StatemachineFieldType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlFieldAttribute_AttributeType()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineFieldType getAttributeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute#getAttributeType <em>Attribute Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute Type</em>' containment reference.
+	 * @see #getAttributeType()
+	 * @generated
+	 */
+	void setAttributeType(StatemachineFieldType value);
+
+} // StatemachineControlFieldAttribute
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldLayout.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldLayout.java
new file mode 100644
index 0000000..4b6b8ac
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlFieldLayout.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Field Layout</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlFieldLayout()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlFieldLayout extends StatemachineControlVisibility {
+} // StatemachineControlFieldLayout
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlPeripheral.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlPeripheral.java
new file mode 100644
index 0000000..8653f4f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlPeripheral.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Peripheral</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getLineDisplays <em>Line Displays</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPosPrinters <em>Pos Printers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getCashDrawers <em>Cash Drawers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPaymentTerminals <em>Payment Terminals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlPeripheral()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlPeripheral extends StatemachineControl {
+	/**
+	 * Returns the value of the '<em><b>Line Displays</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Line Displays</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>Line Displays</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlPeripheral_LineDisplays()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachinePeripheralDeviceLineDisplay> getLineDisplays();
+
+	/**
+	 * Returns the value of the '<em><b>Pos Printers</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pos Printers</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>Pos Printers</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlPeripheral_PosPrinters()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachinePeripheralDevicePOSPrinter> getPosPrinters();
+
+	/**
+	 * Returns the value of the '<em><b>Cash Drawers</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cash Drawers</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>Cash Drawers</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlPeripheral_CashDrawers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachinePeripheralDeviceCashDrawer> getCashDrawers();
+
+	/**
+	 * Returns the value of the '<em><b>Payment Terminals</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Payment Terminals</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>Payment Terminals</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlPeripheral_PaymentTerminals()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachinePeripheralDevicePT> getPaymentTerminals();
+
+} // StatemachineControlPeripheral
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlScheduler.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlScheduler.java
new file mode 100644
index 0000000..1383308
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlScheduler.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler#getSchedulers <em>Schedulers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlScheduler()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlScheduler extends StatemachineControl {
+	/**
+	 * Returns the value of the '<em><b>Schedulers</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Schedulers</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>Schedulers</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlScheduler_Schedulers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineControlSchedulerAttribute> getSchedulers();
+
+} // StatemachineControlScheduler
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlSchedulerAttribute.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlSchedulerAttribute.java
new file mode 100644
index 0000000..199f927
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlSchedulerAttribute.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Scheduler Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getDelay <em>Delay</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlSchedulerAttribute()
+ * @model
+ * @generated
+ */
+public interface StatemachineControlSchedulerAttribute extends StatemachineBase {
+	/**
+	 * Returns the value of the '<em><b>Delay</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Delay</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Delay</em>' attribute.
+	 * @see #setDelay(int)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlSchedulerAttribute_Delay()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDelay();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getDelay <em>Delay</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Delay</em>' attribute.
+	 * @see #getDelay()
+	 * @generated
+	 */
+	void setDelay(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Event</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Event</em>' reference.
+	 * @see #setEvent(StatemachineEvent)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlSchedulerAttribute_Event()
+	 * @model
+	 * @generated
+	 */
+	StatemachineEvent getEvent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getEvent <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Event</em>' reference.
+	 * @see #getEvent()
+	 * @generated
+	 */
+	void setEvent(StatemachineEvent value);
+
+} // StatemachineControlSchedulerAttribute
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlVisibility.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlVisibility.java
new file mode 100644
index 0000000..29f7cb1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineControlVisibility.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Control Visibility</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineControlVisibility()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachineControlVisibility extends StatemachineBase {
+} // StatemachineControlVisibility
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLFactory.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLFactory.java
new file mode 100644
index 0000000..9144b99
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLFactory.java
@@ -0,0 +1,773 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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.statemachine.StatemachineDSLPackage
+ * @generated
+ */
+public interface StatemachineDSLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	StatemachineDSLFactory eINSTANCE = org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Model</em>'.
+	 * @generated
+	 */
+	StatemachineModel createStatemachineModel();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Lazy Resolver</em>'.
+	 * @generated
+	 */
+	StatemachineLazyResolver createStatemachineLazyResolver();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Base</em>'.
+	 * @generated
+	 */
+	StatemachineBase createStatemachineBase();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Package</em>'.
+	 * @generated
+	 */
+	StatemachinePackage createStatemachinePackage();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine</em>'.
+	 * @generated
+	 */
+	Statemachine createStatemachine();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Button</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Button</em>'.
+	 * @generated
+	 */
+	StatemachineControlButton createStatemachineControlButton();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Field</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Field</em>'.
+	 * @generated
+	 */
+	StatemachineControlField createStatemachineControlField();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control DTO</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control DTO</em>'.
+	 * @generated
+	 */
+	StatemachineControlDTO createStatemachineControlDTO();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Scheduler</em>'.
+	 * @generated
+	 */
+	StatemachineControlScheduler createStatemachineControlScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Peripheral</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Peripheral</em>'.
+	 * @generated
+	 */
+	StatemachineControlPeripheral createStatemachineControlPeripheral();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Button Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Button Attribute</em>'.
+	 * @generated
+	 */
+	StatemachineControlButtonAttribute createStatemachineControlButtonAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Button Attribute Event Keyboard</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Button Attribute Event Keyboard</em>'.
+	 * @generated
+	 */
+	StatemachineControlButtonAttributeEventKeyboard createStatemachineControlButtonAttributeEventKeyboard();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Button Attribute Event Identity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Button Attribute Event Identity</em>'.
+	 * @generated
+	 */
+	StatemachineControlButtonAttributeEventIdentity createStatemachineControlButtonAttributeEventIdentity();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Button Attribute Event Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Button Attribute Event Event</em>'.
+	 * @generated
+	 */
+	StatemachineControlButtonAttributeEventEvent createStatemachineControlButtonAttributeEventEvent();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Field Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Field Attribute</em>'.
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute createStatemachineControlFieldAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Field Layout</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Field Layout</em>'.
+	 * @generated
+	 */
+	StatemachineControlFieldLayout createStatemachineControlFieldLayout();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control DTO Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control DTO Attribute</em>'.
+	 * @generated
+	 */
+	StatemachineControlDTOAttribute createStatemachineControlDTOAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Peripheral Device Line Display</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Peripheral Device Line Display</em>'.
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceLineDisplay createStatemachinePeripheralDeviceLineDisplay();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Peripheral Device POS Printer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Peripheral Device POS Printer</em>'.
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePOSPrinter createStatemachinePeripheralDevicePOSPrinter();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Peripheral Device Cash Drawer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Peripheral Device Cash Drawer</em>'.
+	 * @generated
+	 */
+	StatemachinePeripheralDeviceCashDrawer createStatemachinePeripheralDeviceCashDrawer();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Peripheral Device PT</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Peripheral Device PT</em>'.
+	 * @generated
+	 */
+	StatemachinePeripheralDevicePT createStatemachinePeripheralDevicePT();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Control Scheduler Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Control Scheduler Attribute</em>'.
+	 * @generated
+	 */
+	StatemachineControlSchedulerAttribute createStatemachineControlSchedulerAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Event</em>'.
+	 * @generated
+	 */
+	StatemachineEvent createStatemachineEvent();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine State</em>'.
+	 * @generated
+	 */
+	StatemachineState createStatemachineState();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Trigger</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Trigger</em>'.
+	 * @generated
+	 */
+	StatemachineTrigger createStatemachineTrigger();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Blink Rate</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Blink Rate</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralBlinkRate createStatemachineActionPeripheralBlinkRate();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Clear</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Clear</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralClear createStatemachineActionPeripheralClear();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Create Window</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Create Window</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralCreateWindow createStatemachineActionPeripheralCreateWindow();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Cursor Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Cursor Type</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralCursorType createStatemachineActionPeripheralCursorType();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Destroy Window</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Destroy Window</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralDestroyWindow createStatemachineActionPeripheralDestroyWindow();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Device Brightness</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Device Brightness</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralDeviceBrightness createStatemachineActionPeripheralDeviceBrightness();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Display Bitmap</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Display Bitmap</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralDisplayBitmap createStatemachineActionPeripheralDisplayBitmap();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Display Text</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Display Text</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralDisplayText createStatemachineActionPeripheralDisplayText();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Display Text At</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Display Text At</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralDisplayTextAt createStatemachineActionPeripheralDisplayTextAt();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Inter Character Wait</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Inter Character Wait</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralInterCharacterWait createStatemachineActionPeripheralInterCharacterWait();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Marquee Format</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Marquee Format</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralMarqueeFormat createStatemachineActionPeripheralMarqueeFormat();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Marquee Repeat Wait</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Marquee Repeat Wait</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralMarqueeRepeatWait createStatemachineActionPeripheralMarqueeRepeatWait();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Marquee Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Marquee Type</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralMarqueeType createStatemachineActionPeripheralMarqueeType();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Marquee Unit Wait</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Marquee Unit Wait</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralMarqueeUnitWait createStatemachineActionPeripheralMarqueeUnitWait();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Scroll</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Scroll</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralScroll createStatemachineActionPeripheralScroll();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Open Drawer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Open Drawer</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralOpenDrawer createStatemachineActionPeripheralOpenDrawer();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Barcode</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Barcode</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintBarcode createStatemachineActionPeripheralPrintBarcode();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Bitmap</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Bitmap</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintBitmap createStatemachineActionPeripheralPrintBitmap();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Cut</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Cut</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintCut createStatemachineActionPeripheralPrintCut();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Register Bitmap</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Register Bitmap</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintRegisterBitmap createStatemachineActionPeripheralPrintRegisterBitmap();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Normal</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintNormal createStatemachineActionPeripheralPrintNormal();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Open</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Open</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTOpen createStatemachineActionPeripheralPTOpen();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Close</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Close</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTClose createStatemachineActionPeripheralPTClose();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Reversal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Reversal</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTReversal createStatemachineActionPeripheralPTReversal();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Acknowledge</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Acknowledge</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTAcknowledge createStatemachineActionPeripheralPTAcknowledge();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Registration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Registration</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTRegistration createStatemachineActionPeripheralPTRegistration();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Authorization</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Authorization</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTAuthorization createStatemachineActionPeripheralPTAuthorization();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral PT Response</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral PT Response</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPTResponse createStatemachineActionPeripheralPTResponse();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Peripheral Print Report</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Peripheral Print Report</em>'.
+	 * @generated
+	 */
+	StatemachineActionPeripheralPrintReport createStatemachineActionPeripheralPrintReport();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source String</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source String</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceString createStatemachineActionFieldSourceString();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source Number</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source Number</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceNumber createStatemachineActionFieldSourceNumber();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source Evaluate</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source Evaluate</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceEvaluate createStatemachineActionFieldSourceEvaluate();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source Translate</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source Translate</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceTranslate createStatemachineActionFieldSourceTranslate();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source Dto Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source Dto Attribute</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceDtoAttribute createStatemachineActionFieldSourceDtoAttribute();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Source Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Source Event</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSourceEvent createStatemachineActionFieldSourceEvent();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Conditional Transition</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Conditional Transition</em>'.
+	 * @generated
+	 */
+	StatemachineActionConditionalTransition createStatemachineActionConditionalTransition();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Operation Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Operation Parameter</em>'.
+	 * @generated
+	 */
+	StatemachineOperationParameter createStatemachineOperationParameter();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Operation</em>'.
+	 * @generated
+	 */
+	StatemachineOperation createStatemachineOperation();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Guard</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Guard</em>'.
+	 * @generated
+	 */
+	StatemachineGuard createStatemachineGuard();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Function</em>'.
+	 * @generated
+	 */
+	StatemachineFunction createStatemachineFunction();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Storage Retrieve</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Storage Retrieve</em>'.
+	 * @generated
+	 */
+	StatemachineStorageRetrieve createStatemachineStorageRetrieve();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Storage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Storage</em>'.
+	 * @generated
+	 */
+	StatemachineStorage createStatemachineStorage();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Concatenation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Concatenation</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation createStatemachineActionFieldConcatenation();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Set</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Set</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldSet createStatemachineActionFieldSet();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Keystroke</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Keystroke</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldKeystroke createStatemachineActionFieldKeystroke();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Clear</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Clear</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldClear createStatemachineActionFieldClear();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Get</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Get</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldGet createStatemachineActionFieldGet();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Field Remove</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Field Remove</em>'.
+	 * @generated
+	 */
+	StatemachineActionFieldRemove createStatemachineActionFieldRemove();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Item Visible</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Item Visible</em>'.
+	 * @generated
+	 */
+	StatemachineActionItemVisible createStatemachineActionItemVisible();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Item Invisible</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Item Invisible</em>'.
+	 * @generated
+	 */
+	StatemachineActionItemInvisible createStatemachineActionItemInvisible();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Button Caption</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Button Caption</em>'.
+	 * @generated
+	 */
+	StatemachineActionButtonCaption createStatemachineActionButtonCaption();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Button Image</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Button Image</em>'.
+	 * @generated
+	 */
+	StatemachineActionButtonImage createStatemachineActionButtonImage();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action DTO Find</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action DTO Find</em>'.
+	 * @generated
+	 */
+	StatemachineActionDTOFind createStatemachineActionDTOFind();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Action Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Action Scheduler</em>'.
+	 * @generated
+	 */
+	StatemachineActionScheduler createStatemachineActionScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine DTO Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine DTO Type</em>'.
+	 * @generated
+	 */
+	StatemachineDTOType createStatemachineDTOType();
+
+	/**
+	 * Returns a new object of class '<em>Statemachine Field Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Statemachine Field Type</em>'.
+	 * @generated
+	 */
+	StatemachineFieldType createStatemachineFieldType();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	StatemachineDSLPackage getStatemachineDSLPackage();
+
+} //StatemachineDSLFactory
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLPackage.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLPackage.java
new file mode 100644
index 0000000..36d523c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLPackage.java
@@ -0,0 +1,10108 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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.statemachine.StatemachineDSLFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='statemachine' modelName='StatemachineDSL' prefix='StatemachineDSL' updateClasspath='false' copyrightText='Copyright (c) 2011, 2017 - 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='statemachinedsl'"
+ * @generated
+ */
+public interface StatemachineDSLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "statemachine";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/xtext/statemachine/StatemachineDSL";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "statemachinedsl";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	StatemachineDSLPackage eINSTANCE = org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineModelImpl <em>Statemachine Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineModelImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineModel()
+	 * @generated
+	 */
+	int STATEMACHINE_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_MODEL__PACKAGES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineLazyResolverImpl <em>Statemachine Lazy Resolver</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineLazyResolverImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLazyResolver()
+	 * @generated
+	 */
+	int STATEMACHINE_LAZY_RESOLVER = 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = 0;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineBaseImpl <em>Statemachine Base</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineBaseImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineBase()
+	 * @generated
+	 */
+	int STATEMACHINE_BASE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_BASE__NAME = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_BASE_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_BASE_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePackageImpl <em>Statemachine Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePackageImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePackage()
+	 * @generated
+	 */
+	int STATEMACHINE_PACKAGE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_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 STATEMACHINE_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Statemachines</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PACKAGE__STATEMACHINES = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_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 STATEMACHINE_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl <em>Statemachine</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachine()
+	 * @generated
+	 */
+	int STATEMACHINE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__DESCRIPTION = STATEMACHINE_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 STATEMACHINE__DESCRIPTION_VALUE = STATEMACHINE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Function Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__FUNCTION_GROUP = STATEMACHINE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Initial Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__INITIAL_EVENT = STATEMACHINE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Initial State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__INITIAL_STATE = STATEMACHINE_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Events</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__EVENTS = STATEMACHINE_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Controls</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__CONTROLS = STATEMACHINE_BASE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>States</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE__STATES = STATEMACHINE_BASE_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 8;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControl <em>Statemachine Control</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControl()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl <em>Statemachine Control Button</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButton()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON = 6;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON__NAME = STATEMACHINE_CONTROL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Event Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE = STATEMACHINE_CONTROL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Buttons</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON__BUTTONS = STATEMACHINE_CONTROL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_FEATURE_COUNT = STATEMACHINE_CONTROL_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_OPERATION_COUNT = STATEMACHINE_CONTROL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl <em>Statemachine Control Field</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlField()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_FIELD = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD__NAME = STATEMACHINE_CONTROL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Fields</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD__FIELDS = STATEMACHINE_CONTROL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Layouts</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD__LAYOUTS = STATEMACHINE_CONTROL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Field</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_FEATURE_COUNT = STATEMACHINE_CONTROL_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Field</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_OPERATION_COUNT = STATEMACHINE_CONTROL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOImpl <em>Statemachine Control DTO</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlDTO()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_DTO = 8;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO__NAME = STATEMACHINE_CONTROL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Dtos</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO__DTOS = STATEMACHINE_CONTROL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control DTO</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_FEATURE_COUNT = STATEMACHINE_CONTROL_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control DTO</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_OPERATION_COUNT = STATEMACHINE_CONTROL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerImpl <em>Statemachine Control Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlScheduler()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER = 9;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER__NAME = STATEMACHINE_CONTROL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Schedulers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS = STATEMACHINE_CONTROL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_FEATURE_COUNT = STATEMACHINE_CONTROL_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_OPERATION_COUNT = STATEMACHINE_CONTROL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl <em>Statemachine Control Peripheral</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlPeripheral()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL = 10;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL__NAME = STATEMACHINE_CONTROL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Line Displays</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS = STATEMACHINE_CONTROL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Pos Printers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS = STATEMACHINE_CONTROL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Cash Drawers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS = STATEMACHINE_CONTROL_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Payment Terminals</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS = STATEMACHINE_CONTROL_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Peripheral</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL_FEATURE_COUNT = STATEMACHINE_CONTROL_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Peripheral</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_PERIPHERAL_OPERATION_COUNT = STATEMACHINE_CONTROL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility <em>Statemachine Control Visibility</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlVisibility()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_VISIBILITY = 16;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_VISIBILITY__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Visibility</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_VISIBILITY___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Visibility</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_VISIBILITY_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl <em>Statemachine Control Button Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttribute()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__NAME = STATEMACHINE_CONTROL_VISIBILITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Has Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_FEATURE_COUNT = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_VISIBILITY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_OPERATION_COUNT = STATEMACHINE_CONTROL_VISIBILITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent <em>Statemachine Control Button Attribute Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEvent()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT = 12;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button Attribute Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button Attribute Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventKeyboardImpl <em>Statemachine Control Button Attribute Event Keyboard</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventKeyboardImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventKeyboard()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD = 13;
+
+	/**
+	 * The feature id for the '<em><b>Keystroke</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button Attribute Event Keyboard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD_FEATURE_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button Attribute Event Keyboard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD_OPERATION_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventIdentityImpl <em>Statemachine Control Button Attribute Event Identity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventIdentityImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventIdentity()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY = 14;
+
+	/**
+	 * The feature id for the '<em><b>Identity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button Attribute Event Identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY_FEATURE_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button Attribute Event Identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY_OPERATION_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventEventImpl <em>Statemachine Control Button Attribute Event Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventEventImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventEvent()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT = 15;
+
+	/**
+	 * The feature id for the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Button Attribute Event Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT_FEATURE_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Button Attribute Event Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT_OPERATION_COUNT = STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldAttributeImpl <em>Statemachine Control Field Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldAttributeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlFieldAttribute()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE = 17;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__NAME = STATEMACHINE_CONTROL_VISIBILITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Attribute Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Field Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE_FEATURE_COUNT = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_VISIBILITY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Field Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_ATTRIBUTE_OPERATION_COUNT = STATEMACHINE_CONTROL_VISIBILITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldLayoutImpl <em>Statemachine Control Field Layout</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldLayoutImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlFieldLayout()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_FIELD_LAYOUT = 18;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_LAYOUT__NAME = STATEMACHINE_CONTROL_VISIBILITY__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Field Layout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_LAYOUT_FEATURE_COUNT = STATEMACHINE_CONTROL_VISIBILITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_LAYOUT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_CONTROL_VISIBILITY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Field Layout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_FIELD_LAYOUT_OPERATION_COUNT = STATEMACHINE_CONTROL_VISIBILITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl <em>Statemachine Control DTO Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlDTOAttribute()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE = 19;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Attribute Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Has Event</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT = STATEMACHINE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT = STATEMACHINE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control DTO Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control DTO Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_DTO_ATTRIBUTE_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice <em>Statemachine Peripheral Device</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevice()
+	 * @generated
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Peripheral Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Peripheral Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceLineDisplayImpl <em>Statemachine Peripheral Device Line Display</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceLineDisplayImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDeviceLineDisplay()
+	 * @generated
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY = 21;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY__NAME = STATEMACHINE_PERIPHERAL_DEVICE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Peripheral Device Line Display</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY_FEATURE_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_PERIPHERAL_DEVICE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Peripheral Device Line Display</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY_OPERATION_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePOSPrinterImpl <em>Statemachine Peripheral Device POS Printer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePOSPrinterImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevicePOSPrinter()
+	 * @generated
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER = 22;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER__NAME = STATEMACHINE_PERIPHERAL_DEVICE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Peripheral Device POS Printer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER_FEATURE_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_PERIPHERAL_DEVICE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Peripheral Device POS Printer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER_OPERATION_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceCashDrawerImpl <em>Statemachine Peripheral Device Cash Drawer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceCashDrawerImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDeviceCashDrawer()
+	 * @generated
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER = 23;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER__NAME = STATEMACHINE_PERIPHERAL_DEVICE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Peripheral Device Cash Drawer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER_FEATURE_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_PERIPHERAL_DEVICE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Peripheral Device Cash Drawer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER_OPERATION_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePTImpl <em>Statemachine Peripheral Device PT</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePTImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevicePT()
+	 * @generated
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_PT = 24;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_PT__NAME = STATEMACHINE_PERIPHERAL_DEVICE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Peripheral Device PT</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_PT_FEATURE_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_PT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_PERIPHERAL_DEVICE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Peripheral Device PT</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_PERIPHERAL_DEVICE_PT_OPERATION_COUNT = STATEMACHINE_PERIPHERAL_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl <em>Statemachine Control Scheduler Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlSchedulerAttribute()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE = 25;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Delay</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Event</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT = STATEMACHINE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Control Scheduler Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Control Scheduler Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineEventImpl <em>Statemachine Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineEventImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineEvent()
+	 * @generated
+	 */
+	int STATEMACHINE_EVENT = 26;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_EVENT__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_EVENT_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_EVENT_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl <em>Statemachine State</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineState()
+	 * @generated
+	 */
+	int STATEMACHINE_STATE = 27;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__NAME = STATEMACHINE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Triggers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__TRIGGERS = STATEMACHINE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Identity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__IDENTITY = STATEMACHINE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Keystroke</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__KEYSTROKE = STATEMACHINE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Has Key Operation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__HAS_KEY_OPERATION = STATEMACHINE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Key Operation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE__KEY_OPERATION = STATEMACHINE_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE_FEATURE_COUNT = STATEMACHINE_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STATE_OPERATION_COUNT = STATEMACHINE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl <em>Statemachine Trigger</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineTrigger()
+	 * @generated
+	 */
+	int STATEMACHINE_TRIGGER = 28;
+
+	/**
+	 * The feature id for the '<em><b>Has Transition</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER__HAS_TRANSITION = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Transition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER__TRANSITION = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Triggers</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER__TRIGGERS = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Guards</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER__GUARDS = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER__ACTIONS = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Trigger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Trigger</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_TRIGGER_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineAction <em>Statemachine Action</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineAction
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineAction()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION = 29;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl <em>Statemachine Action Peripheral Blink Rate</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralBlinkRate()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE = 30;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Blink Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Blink Rate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Blink Rate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralClearImpl <em>Statemachine Action Peripheral Clear</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralClearImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralClear()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CLEAR = 31;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Clear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CLEAR_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CLEAR___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Clear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CLEAR_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl <em>Statemachine Action Peripheral Create Window</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW = 32;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Viewport Row</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Viewport Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Viewport Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Viewport Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH = STATEMACHINE_ACTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Window Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT = STATEMACHINE_ACTION_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Window Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH = STATEMACHINE_ACTION_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Create Window</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Create Window</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl <em>Statemachine Action Peripheral Cursor Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralCursorType()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE = 33;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cursor Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Cursor Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Cursor Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDestroyWindowImpl <em>Statemachine Action Peripheral Destroy Window</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDestroyWindowImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDestroyWindow()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW = 34;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Destroy Window</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Destroy Window</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl <em>Statemachine Action Peripheral Device Brightness</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDeviceBrightness()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS = 35;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Brightness</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Device Brightness</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Device Brightness</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl <em>Statemachine Action Peripheral Display Bitmap</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayBitmap()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP = 36;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Display Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Display Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl <em>Statemachine Action Peripheral Display Text</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayText()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT = 37;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Has Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Text Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Display Text</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Display Text</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl <em>Statemachine Action Peripheral Display Text At</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT = 38;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Row</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Has Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Text Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Display Text At</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Display Text At</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl <em>Statemachine Action Peripheral Inter Character Wait</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralInterCharacterWait()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT = 39;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Inter Character Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Inter Character Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl <em>Statemachine Action Peripheral Marquee Format</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeFormat()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT = 40;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Marquee Format</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Marquee Format</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl <em>Statemachine Action Peripheral Marquee Repeat Wait</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeRepeatWait()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT = 41;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Marquee Repeat Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Marquee Repeat Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl <em>Statemachine Action Peripheral Marquee Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeType()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE = 42;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Marquee Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Marquee Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Marquee Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl <em>Statemachine Action Peripheral Marquee Unit Wait</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeUnitWait()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT = 43;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Wait</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Marquee Unit Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Marquee Unit Wait</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl <em>Statemachine Action Peripheral Scroll</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralScroll()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL = 44;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Direction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Units</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Scroll</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Scroll</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_SCROLL_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralOpenDrawerImpl <em>Statemachine Action Peripheral Open Drawer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralOpenDrawerImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralOpenDrawer()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER = 45;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Open Drawer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Open Drawer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl <em>Statemachine Action Peripheral Print Barcode</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintBarcode()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE = 46;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Barcode Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Barcode</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Barcode</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl <em>Statemachine Action Peripheral Print Bitmap</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintBitmap()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP = 47;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl <em>Statemachine Action Peripheral Print Cut</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintCut()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT = 48;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Cut</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Cut</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl <em>Statemachine Action Peripheral Print Register Bitmap</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintRegisterBitmap()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP = 49;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bitmap Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Register Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Register Bitmap</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl <em>Statemachine Action Peripheral Print Normal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintNormal()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL = 50;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Barcode Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl <em>Statemachine Action Peripheral PT Open</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTOpen()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN = 51;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Host</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Port</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Open</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Open</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTCloseImpl <em>Statemachine Action Peripheral PT Close</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTCloseImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTClose()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE = 52;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Close</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Close</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl <em>Statemachine Action Peripheral PT Reversal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTReversal()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL = 53;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Receipt</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Reversal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Reversal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAcknowledgeImpl <em>Statemachine Action Peripheral PT Acknowledge</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAcknowledgeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTAcknowledge()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE = 54;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Acknowledge</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Acknowledge</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl <em>Statemachine Action Peripheral PT Registration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTRegistration()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION = 55;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Configuration</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Registration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Registration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl <em>Statemachine Action Peripheral PT Authorization</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTAuthorization()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION = 56;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Amount</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Authorization</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Authorization</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource <em>Statemachine Action Field Source</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSource()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE = 59;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTResponseImpl <em>Statemachine Action Peripheral PT Response</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTResponseImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTResponse()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE = 57;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral PT Response</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral PT Response</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl <em>Statemachine Action Peripheral Print Report</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintReport()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT = 58;
+
+	/**
+	 * The feature id for the '<em><b>Report</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Has Filter</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Peripheral Print Report</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Peripheral Print Report</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceStringImpl <em>Statemachine Action Field Source String</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceStringImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceString()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_STRING = 60;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source String</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_STRING_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_STRING___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source String</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_STRING_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceNumberImpl <em>Statemachine Action Field Source Number</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceNumberImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceNumber()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER = 61;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source Number</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source Number</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEvaluateImpl <em>Statemachine Action Field Source Evaluate</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEvaluateImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceEvaluate()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE = 62;
+
+	/**
+	 * The feature id for the '<em><b>Evaluationtype</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source Evaluate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source Evaluate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceTranslateImpl <em>Statemachine Action Field Source Translate</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceTranslateImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceTranslate()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE = 63;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source Translate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source Translate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl <em>Statemachine Action Field Source Dto Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceDtoAttribute()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE = 64;
+
+	/**
+	 * The feature id for the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source Dto Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source Dto Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEventImpl <em>Statemachine Action Field Source Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEventImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceEvent()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVENT = 65;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Source Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVENT_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVENT___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Source Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SOURCE_EVENT_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl <em>Statemachine Action Conditional Transition</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionConditionalTransition()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION = 66;
+
+	/**
+	 * The feature id for the '<em><b>Transition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Guard</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Conditional Transition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Conditional Transition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_CONDITIONAL_TRANSITION_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationParameterImpl <em>Statemachine Operation Parameter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationParameterImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineOperationParameter()
+	 * @generated
+	 */
+	int STATEMACHINE_OPERATION_PARAMETER = 67;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_PARAMETER__SOURCE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Operation Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_PARAMETER_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_PARAMETER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Operation Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_PARAMETER_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl <em>Statemachine Operation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineOperation()
+	 * @generated
+	 */
+	int STATEMACHINE_OPERATION = 68;
+
+	/**
+	 * The feature id for the '<em><b>Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION__OPERATION = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION__FIRST = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>More</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION__MORE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_OPERATION_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl <em>Statemachine Guard</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineGuard()
+	 * @generated
+	 */
+	int STATEMACHINE_GUARD = 69;
+
+	/**
+	 * The feature id for the '<em><b>Guard</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD__GUARD = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Has On Fail</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD__HAS_ON_FAIL = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>On Fail Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>On Fail Caption</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD__ON_FAIL_CAPTION = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>On Fail Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD__ON_FAIL_TYPE = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Guard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Guard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_GUARD_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl <em>Statemachine Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineFunction()
+	 * @generated
+	 */
+	int STATEMACHINE_FUNCTION = 70;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION__FUNCTION = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION__FIRST = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>More</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION__MORE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FUNCTION_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl <em>Statemachine Storage Retrieve</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineStorageRetrieve()
+	 * @generated
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE = 71;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE__KEY = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Storage Retrieve</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Storage Retrieve</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_RETRIEVE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl <em>Statemachine Storage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineStorage()
+	 * @generated
+	 */
+	int STATEMACHINE_STORAGE = 72;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE__KEY = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Content</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE__CONTENT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Storage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_STORAGE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl <em>Statemachine Action Field Concatenation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldConcatenation()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION = 73;
+
+	/**
+	 * The feature id for the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>More</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Concatenation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Concatenation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CONCATENATION_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl <em>Statemachine Action Field Set</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSet()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET = 74;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET__SOURCE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_SET_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl <em>Statemachine Action Field Keystroke</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldKeystroke()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE = 75;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Keystroke</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Keystroke</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Keystroke</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_KEYSTROKE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldClearImpl <em>Statemachine Action Field Clear</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldClearImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldClear()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_CLEAR = 76;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Clear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CLEAR_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CLEAR___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Clear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_CLEAR_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldGetImpl <em>Statemachine Action Field Get</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldGetImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldGet()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_GET = 77;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Get</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_GET_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_GET___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Get</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_GET_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldRemoveImpl <em>Statemachine Action Field Remove</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldRemoveImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldRemove()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_FIELD_REMOVE = 78;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Field Remove</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_REMOVE_FEATURE_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_REMOVE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION_FIELD_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Field Remove</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_FIELD_REMOVE_OPERATION_COUNT = STATEMACHINE_ACTION_FIELD_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemVisibleImpl <em>Statemachine Action Item Visible</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemVisibleImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionItemVisible()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_ITEM_VISIBLE = 79;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Item Visible</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_VISIBLE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_VISIBLE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Item Visible</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_VISIBLE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemInvisibleImpl <em>Statemachine Action Item Invisible</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemInvisibleImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionItemInvisible()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_ITEM_INVISIBLE = 80;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Item Invisible</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_INVISIBLE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_INVISIBLE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Item Invisible</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_ITEM_INVISIBLE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl <em>Statemachine Action Button Caption</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionButtonCaption()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION = 81;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Caption</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Button Caption</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Button Caption</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_CAPTION_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl <em>Statemachine Action Button Image</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionButtonImage()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE = 82;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Image</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Button Image</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Button Image</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_BUTTON_IMAGE_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl <em>Statemachine Action DTO Find</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionDTOFind()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND = 83;
+
+	/**
+	 * The feature id for the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND__DTO = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Search</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND__SEARCH = STATEMACHINE_ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action DTO Find</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action DTO Find</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_DTO_FIND_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionSchedulerImpl <em>Statemachine Action Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionSchedulerImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionScheduler()
+	 * @generated
+	 */
+	int STATEMACHINE_ACTION_SCHEDULER = 84;
+
+	/**
+	 * The feature id for the '<em><b>Scheduler</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_SCHEDULER__SCHEDULER = STATEMACHINE_ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Action Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_SCHEDULER_FEATURE_COUNT = STATEMACHINE_ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_ACTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Action Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_ACTION_SCHEDULER_OPERATION_COUNT = STATEMACHINE_ACTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineDTOTypeImpl <em>Statemachine DTO Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDTOTypeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineDTOType()
+	 * @generated
+	 */
+	int STATEMACHINE_DTO_TYPE = 85;
+
+	/**
+	 * The feature id for the '<em><b>Attribute Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine DTO Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_DTO_TYPE_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_DTO_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine DTO Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_DTO_TYPE_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFieldTypeImpl <em>Statemachine Field Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineFieldTypeImpl
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineFieldType()
+	 * @generated
+	 */
+	int STATEMACHINE_FIELD_TYPE = 86;
+
+	/**
+	 * The feature id for the '<em><b>Attribute Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Statemachine Field Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FIELD_TYPE_FEATURE_COUNT = STATEMACHINE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FIELD_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Statemachine Field Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATEMACHINE_FIELD_TYPE_OPERATION_COUNT = STATEMACHINE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineInternalType <em>Statemachine Internal Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineInternalType()
+	 * @generated
+	 */
+	int STATEMACHINE_INTERNAL_TYPE = 87;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType <em>Statemachine Control Button Event Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonEventType()
+	 * @generated
+	 */
+	int STATEMACHINE_CONTROL_BUTTON_EVENT_TYPE = 88;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType <em>Statemachine Evaluation Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineEvaluationType()
+	 * @generated
+	 */
+	int STATEMACHINE_EVALUATION_TYPE = 89;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType <em>Statemachine User Message Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineUserMessageType()
+	 * @generated
+	 */
+	int STATEMACHINE_USER_MESSAGE_TYPE = 90;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType <em>Statemachine Line Display Cursor Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayCursorType()
+	 * @generated
+	 */
+	int STATEMACHINE_LINE_DISPLAY_CURSOR_TYPE = 91;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType <em>Statemachine Line Display Marquee Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayMarqueeType()
+	 * @generated
+	 */
+	int STATEMACHINE_LINE_DISPLAY_MARQUEE_TYPE = 92;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat <em>Statemachine Line Display Marquee Format</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayMarqueeFormat()
+	 * @generated
+	 */
+	int STATEMACHINE_LINE_DISPLAY_MARQUEE_FORMAT = 93;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType <em>Statemachine Line Display Text Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayTextType()
+	 * @generated
+	 */
+	int STATEMACHINE_LINE_DISPLAY_TEXT_TYPE = 94;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType <em>Statemachine Line Display Scroll Text Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayScrollTextType()
+	 * @generated
+	 */
+	int STATEMACHINE_LINE_DISPLAY_SCROLL_TEXT_TYPE = 95;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType <em>Statemachine POS Printer Barcode Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePOSPrinterBarcodeType()
+	 * @generated
+	 */
+	int STATEMACHINE_POS_PRINTER_BARCODE_TYPE = 96;
+
+	/**
+	 * 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.statemachine.impl.StatemachineDSLPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 97;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineModel <em>Statemachine Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Model</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineModel
+	 * @generated
+	 */
+	EClass getStatemachineModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineModel#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.statemachine.StatemachineModel#getPackages()
+	 * @see #getStatemachineModel()
+	 * @generated
+	 */
+	EReference getStatemachineModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver <em>Statemachine Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Lazy Resolver</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver
+	 * @generated
+	 */
+	EClass getStatemachineLazyResolver();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver#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.statemachine.StatemachineLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject)
+	 * @generated
+	 */
+	EOperation getStatemachineLazyResolver__EResolveProxy__InternalEObject();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineBase <em>Statemachine Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Base</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineBase
+	 * @generated
+	 */
+	EClass getStatemachineBase();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineBase#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.statemachine.StatemachineBase#getName()
+	 * @see #getStatemachineBase()
+	 * @generated
+	 */
+	EAttribute getStatemachineBase_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePackage <em>Statemachine Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Package</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePackage
+	 * @generated
+	 */
+	EClass getStatemachinePackage();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePackage#getStatemachines <em>Statemachines</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Statemachines</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePackage#getStatemachines()
+	 * @see #getStatemachinePackage()
+	 * @generated
+	 */
+	EReference getStatemachinePackage_Statemachines();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.Statemachine <em>Statemachine</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine
+	 * @generated
+	 */
+	EClass getStatemachine();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#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.statemachine.Statemachine#isDescription()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EAttribute getStatemachine_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#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.statemachine.Statemachine#getDescriptionValue()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EAttribute getStatemachine_DescriptionValue();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getFunctionGroup <em>Function Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Function Group</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getFunctionGroup()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_FunctionGroup();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialEvent <em>Initial Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Initial Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialEvent()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_InitialEvent();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialState <em>Initial State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Initial State</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getInitialState()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_InitialState();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getEvents <em>Events</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Events</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getEvents()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_Events();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getControls <em>Controls</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Controls</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getControls()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_Controls();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.Statemachine#getStates <em>States</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>States</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.Statemachine#getStates()
+	 * @see #getStatemachine()
+	 * @generated
+	 */
+	EReference getStatemachine_States();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControl <em>Statemachine Control</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControl
+	 * @generated
+	 */
+	EClass getStatemachineControl();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton <em>Statemachine Control Button</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButton
+	 * @generated
+	 */
+	EClass getStatemachineControlButton();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getEventType <em>Event Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Event Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getEventType()
+	 * @see #getStatemachineControlButton()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlButton_EventType();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getButtons <em>Buttons</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Buttons</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButton#getButtons()
+	 * @see #getStatemachineControlButton()
+	 * @generated
+	 */
+	EReference getStatemachineControlButton_Buttons();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField <em>Statemachine Control Field</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Field</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlField
+	 * @generated
+	 */
+	EClass getStatemachineControlField();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getFields <em>Fields</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Fields</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getFields()
+	 * @see #getStatemachineControlField()
+	 * @generated
+	 */
+	EReference getStatemachineControlField_Fields();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getLayouts <em>Layouts</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Layouts</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlField#getLayouts()
+	 * @see #getStatemachineControlField()
+	 * @generated
+	 */
+	EReference getStatemachineControlField_Layouts();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO <em>Statemachine Control DTO</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control DTO</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO
+	 * @generated
+	 */
+	EClass getStatemachineControlDTO();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO#getDtos <em>Dtos</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Dtos</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO#getDtos()
+	 * @see #getStatemachineControlDTO()
+	 * @generated
+	 */
+	EReference getStatemachineControlDTO_Dtos();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler <em>Statemachine Control Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler
+	 * @generated
+	 */
+	EClass getStatemachineControlScheduler();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler#getSchedulers <em>Schedulers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Schedulers</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler#getSchedulers()
+	 * @see #getStatemachineControlScheduler()
+	 * @generated
+	 */
+	EReference getStatemachineControlScheduler_Schedulers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral <em>Statemachine Control Peripheral</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Peripheral</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral
+	 * @generated
+	 */
+	EClass getStatemachineControlPeripheral();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getLineDisplays <em>Line Displays</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Line Displays</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getLineDisplays()
+	 * @see #getStatemachineControlPeripheral()
+	 * @generated
+	 */
+	EReference getStatemachineControlPeripheral_LineDisplays();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPosPrinters <em>Pos Printers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Pos Printers</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPosPrinters()
+	 * @see #getStatemachineControlPeripheral()
+	 * @generated
+	 */
+	EReference getStatemachineControlPeripheral_PosPrinters();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getCashDrawers <em>Cash Drawers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Cash Drawers</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getCashDrawers()
+	 * @see #getStatemachineControlPeripheral()
+	 * @generated
+	 */
+	EReference getStatemachineControlPeripheral_CashDrawers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPaymentTerminals <em>Payment Terminals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Payment Terminals</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral#getPaymentTerminals()
+	 * @see #getStatemachineControlPeripheral()
+	 * @generated
+	 */
+	EReference getStatemachineControlPeripheral_PaymentTerminals();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute <em>Statemachine Control Button Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute
+	 * @generated
+	 */
+	EClass getStatemachineControlButtonAttribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#isHasImage <em>Has Image</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Image</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#isHasImage()
+	 * @see #getStatemachineControlButtonAttribute()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlButtonAttribute_HasImage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getImage <em>Image</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Image</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getImage()
+	 * @see #getStatemachineControlButtonAttribute()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlButtonAttribute_Image();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getEvent <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute#getEvent()
+	 * @see #getStatemachineControlButtonAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineControlButtonAttribute_Event();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent <em>Statemachine Control Button Attribute Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button Attribute Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent
+	 * @generated
+	 */
+	EClass getStatemachineControlButtonAttributeEvent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard <em>Statemachine Control Button Attribute Event Keyboard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button Attribute Event Keyboard</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard
+	 * @generated
+	 */
+	EClass getStatemachineControlButtonAttributeEventKeyboard();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard#getKeystroke <em>Keystroke</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Keystroke</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard#getKeystroke()
+	 * @see #getStatemachineControlButtonAttributeEventKeyboard()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlButtonAttributeEventKeyboard_Keystroke();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity <em>Statemachine Control Button Attribute Event Identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button Attribute Event Identity</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity
+	 * @generated
+	 */
+	EClass getStatemachineControlButtonAttributeEventIdentity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity#getIdentity <em>Identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Identity</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity#getIdentity()
+	 * @see #getStatemachineControlButtonAttributeEventIdentity()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlButtonAttributeEventIdentity_Identity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent <em>Statemachine Control Button Attribute Event Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Button Attribute Event Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent
+	 * @generated
+	 */
+	EClass getStatemachineControlButtonAttributeEventEvent();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent#getEvent <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent#getEvent()
+	 * @see #getStatemachineControlButtonAttributeEventEvent()
+	 * @generated
+	 */
+	EReference getStatemachineControlButtonAttributeEventEvent_Event();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility <em>Statemachine Control Visibility</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Visibility</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility
+	 * @generated
+	 */
+	EClass getStatemachineControlVisibility();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute <em>Statemachine Control Field Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Field Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute
+	 * @generated
+	 */
+	EClass getStatemachineControlFieldAttribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute#getAttributeType <em>Attribute Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Attribute Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute#getAttributeType()
+	 * @see #getStatemachineControlFieldAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineControlFieldAttribute_AttributeType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout <em>Statemachine Control Field Layout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Field Layout</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout
+	 * @generated
+	 */
+	EClass getStatemachineControlFieldLayout();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute <em>Statemachine Control DTO Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control DTO Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute
+	 * @generated
+	 */
+	EClass getStatemachineControlDTOAttribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getAttributeType <em>Attribute Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Attribute Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getAttributeType()
+	 * @see #getStatemachineControlDTOAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineControlDTOAttribute_AttributeType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#isHasEvent <em>Has Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#isHasEvent()
+	 * @see #getStatemachineControlDTOAttribute()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlDTOAttribute_HasEvent();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getEvent <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute#getEvent()
+	 * @see #getStatemachineControlDTOAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineControlDTOAttribute_Event();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice <em>Statemachine Peripheral Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Peripheral Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice
+	 * @generated
+	 */
+	EClass getStatemachinePeripheralDevice();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay <em>Statemachine Peripheral Device Line Display</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Peripheral Device Line Display</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay
+	 * @generated
+	 */
+	EClass getStatemachinePeripheralDeviceLineDisplay();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter <em>Statemachine Peripheral Device POS Printer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Peripheral Device POS Printer</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter
+	 * @generated
+	 */
+	EClass getStatemachinePeripheralDevicePOSPrinter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer <em>Statemachine Peripheral Device Cash Drawer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Peripheral Device Cash Drawer</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer
+	 * @generated
+	 */
+	EClass getStatemachinePeripheralDeviceCashDrawer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT <em>Statemachine Peripheral Device PT</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Peripheral Device PT</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT
+	 * @generated
+	 */
+	EClass getStatemachinePeripheralDevicePT();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute <em>Statemachine Control Scheduler Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Control Scheduler Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute
+	 * @generated
+	 */
+	EClass getStatemachineControlSchedulerAttribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getDelay <em>Delay</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Delay</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getDelay()
+	 * @see #getStatemachineControlSchedulerAttribute()
+	 * @generated
+	 */
+	EAttribute getStatemachineControlSchedulerAttribute_Delay();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getEvent <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute#getEvent()
+	 * @see #getStatemachineControlSchedulerAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineControlSchedulerAttribute_Event();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineEvent <em>Statemachine Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvent
+	 * @generated
+	 */
+	EClass getStatemachineEvent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState <em>Statemachine State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine State</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState
+	 * @generated
+	 */
+	EClass getStatemachineState();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getTriggers <em>Triggers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Triggers</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState#getTriggers()
+	 * @see #getStatemachineState()
+	 * @generated
+	 */
+	EReference getStatemachineState_Triggers();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getIdentity <em>Identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Identity</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState#getIdentity()
+	 * @see #getStatemachineState()
+	 * @generated
+	 */
+	EReference getStatemachineState_Identity();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeystroke <em>Keystroke</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Keystroke</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeystroke()
+	 * @see #getStatemachineState()
+	 * @generated
+	 */
+	EReference getStatemachineState_Keystroke();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#isHasKeyOperation <em>Has Key Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Key Operation</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState#isHasKeyOperation()
+	 * @see #getStatemachineState()
+	 * @generated
+	 */
+	EAttribute getStatemachineState_HasKeyOperation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeyOperation <em>Key Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Key Operation</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeyOperation()
+	 * @see #getStatemachineState()
+	 * @generated
+	 */
+	EReference getStatemachineState_KeyOperation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger <em>Statemachine Trigger</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Trigger</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger
+	 * @generated
+	 */
+	EClass getStatemachineTrigger();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#isHasTransition <em>Has Transition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Transition</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#isHasTransition()
+	 * @see #getStatemachineTrigger()
+	 * @generated
+	 */
+	EAttribute getStatemachineTrigger_HasTransition();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTransition <em>Transition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Transition</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTransition()
+	 * @see #getStatemachineTrigger()
+	 * @generated
+	 */
+	EReference getStatemachineTrigger_Transition();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTriggers <em>Triggers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Triggers</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTriggers()
+	 * @see #getStatemachineTrigger()
+	 * @generated
+	 */
+	EReference getStatemachineTrigger_Triggers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getGuards <em>Guards</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Guards</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getGuards()
+	 * @see #getStatemachineTrigger()
+	 * @generated
+	 */
+	EReference getStatemachineTrigger_Guards();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getActions <em>Actions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Actions</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getActions()
+	 * @see #getStatemachineTrigger()
+	 * @generated
+	 */
+	EReference getStatemachineTrigger_Actions();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineAction <em>Statemachine Action</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineAction
+	 * @generated
+	 */
+	EClass getStatemachineAction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate <em>Statemachine Action Peripheral Blink Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Blink Rate</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralBlinkRate();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getDevice()
+	 * @see #getStatemachineActionPeripheralBlinkRate()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralBlinkRate_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getBlinkRate <em>Blink Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Blink Rate</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate#getBlinkRate()
+	 * @see #getStatemachineActionPeripheralBlinkRate()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralBlinkRate_BlinkRate();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear <em>Statemachine Action Peripheral Clear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Clear</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralClear();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear#getDevice()
+	 * @see #getStatemachineActionPeripheralClear()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralClear_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow <em>Statemachine Action Peripheral Create Window</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Create Window</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralCreateWindow();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getDevice()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralCreateWindow_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportRow <em>Viewport Row</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Viewport Row</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportRow()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_ViewportRow();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportColumn <em>Viewport Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Viewport Column</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportColumn()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_ViewportColumn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportHeight <em>Viewport Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Viewport Height</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportHeight()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_ViewportHeight();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportWidth <em>Viewport Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Viewport Width</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getViewportWidth()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_ViewportWidth();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowHeight <em>Window Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Window Height</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowHeight()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_WindowHeight();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowWidth <em>Window Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Window Width</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow#getWindowWidth()
+	 * @see #getStatemachineActionPeripheralCreateWindow()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCreateWindow_WindowWidth();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType <em>Statemachine Action Peripheral Cursor Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Cursor Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralCursorType();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getDevice()
+	 * @see #getStatemachineActionPeripheralCursorType()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralCursorType_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getCursorType <em>Cursor Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cursor Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType#getCursorType()
+	 * @see #getStatemachineActionPeripheralCursorType()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralCursorType_CursorType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow <em>Statemachine Action Peripheral Destroy Window</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Destroy Window</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralDestroyWindow();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow#getDevice()
+	 * @see #getStatemachineActionPeripheralDestroyWindow()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDestroyWindow_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness <em>Statemachine Action Peripheral Device Brightness</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Device Brightness</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralDeviceBrightness();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getDevice()
+	 * @see #getStatemachineActionPeripheralDeviceBrightness()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDeviceBrightness_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getBrightness <em>Brightness</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Brightness</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness#getBrightness()
+	 * @see #getStatemachineActionPeripheralDeviceBrightness()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDeviceBrightness_Brightness();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap <em>Statemachine Action Peripheral Display Bitmap</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Display Bitmap</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralDisplayBitmap();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getDevice()
+	 * @see #getStatemachineActionPeripheralDisplayBitmap()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDisplayBitmap_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getBitmapId <em>Bitmap Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bitmap Id</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap#getBitmapId()
+	 * @see #getStatemachineActionPeripheralDisplayBitmap()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayBitmap_BitmapId();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText <em>Statemachine Action Peripheral Display Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Display Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralDisplayText();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getDevice()
+	 * @see #getStatemachineActionPeripheralDisplayText()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDisplayText_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getText()
+	 * @see #getStatemachineActionPeripheralDisplayText()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDisplayText_Text();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#isHasType <em>Has Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#isHasType()
+	 * @see #getStatemachineActionPeripheralDisplayText()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayText_HasType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getTextType <em>Text Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Text Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText#getTextType()
+	 * @see #getStatemachineActionPeripheralDisplayText()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayText_TextType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt <em>Statemachine Action Peripheral Display Text At</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Display Text At</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralDisplayTextAt();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getDevice()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDisplayTextAt_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getRow <em>Row</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Row</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getRow()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayTextAt_Row();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getColumn <em>Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Column</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getColumn()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayTextAt_Column();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getText()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralDisplayTextAt_Text();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#isHasType <em>Has Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#isHasType()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayTextAt_HasType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getTextType <em>Text Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Text Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt#getTextType()
+	 * @see #getStatemachineActionPeripheralDisplayTextAt()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralDisplayTextAt_TextType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait <em>Statemachine Action Peripheral Inter Character Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Inter Character Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralInterCharacterWait();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getDevice()
+	 * @see #getStatemachineActionPeripheralInterCharacterWait()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralInterCharacterWait_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getWait <em>Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait#getWait()
+	 * @see #getStatemachineActionPeripheralInterCharacterWait()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralInterCharacterWait_Wait();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat <em>Statemachine Action Peripheral Marquee Format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Marquee Format</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralMarqueeFormat();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getDevice()
+	 * @see #getStatemachineActionPeripheralMarqueeFormat()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralMarqueeFormat_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getFormat <em>Format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Format</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat#getFormat()
+	 * @see #getStatemachineActionPeripheralMarqueeFormat()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralMarqueeFormat_Format();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait <em>Statemachine Action Peripheral Marquee Repeat Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Marquee Repeat Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralMarqueeRepeatWait();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getDevice()
+	 * @see #getStatemachineActionPeripheralMarqueeRepeatWait()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralMarqueeRepeatWait_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getWait <em>Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait#getWait()
+	 * @see #getStatemachineActionPeripheralMarqueeRepeatWait()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralMarqueeRepeatWait_Wait();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType <em>Statemachine Action Peripheral Marquee Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Marquee Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralMarqueeType();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getDevice()
+	 * @see #getStatemachineActionPeripheralMarqueeType()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralMarqueeType_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getMarqueeType <em>Marquee Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Marquee Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType#getMarqueeType()
+	 * @see #getStatemachineActionPeripheralMarqueeType()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralMarqueeType_MarqueeType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait <em>Statemachine Action Peripheral Marquee Unit Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Marquee Unit Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralMarqueeUnitWait();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getDevice()
+	 * @see #getStatemachineActionPeripheralMarqueeUnitWait()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralMarqueeUnitWait_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getWait <em>Wait</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Wait</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait#getWait()
+	 * @see #getStatemachineActionPeripheralMarqueeUnitWait()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralMarqueeUnitWait_Wait();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll <em>Statemachine Action Peripheral Scroll</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Scroll</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralScroll();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDevice()
+	 * @see #getStatemachineActionPeripheralScroll()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralScroll_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDirection <em>Direction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Direction</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getDirection()
+	 * @see #getStatemachineActionPeripheralScroll()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralScroll_Direction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getUnits <em>Units</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Units</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll#getUnits()
+	 * @see #getStatemachineActionPeripheralScroll()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralScroll_Units();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer <em>Statemachine Action Peripheral Open Drawer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Open Drawer</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralOpenDrawer();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer#getDevice()
+	 * @see #getStatemachineActionPeripheralOpenDrawer()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralOpenDrawer_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode <em>Statemachine Action Peripheral Print Barcode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Barcode</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintBarcode();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getDevice()
+	 * @see #getStatemachineActionPeripheralPrintBarcode()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintBarcode_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getData <em>Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Data</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getData()
+	 * @see #getStatemachineActionPeripheralPrintBarcode()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintBarcode_Data();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getBarcodeType <em>Barcode Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Barcode Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode#getBarcodeType()
+	 * @see #getStatemachineActionPeripheralPrintBarcode()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintBarcode_BarcodeType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap <em>Statemachine Action Peripheral Print Bitmap</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Bitmap</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintBitmap();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getDevice()
+	 * @see #getStatemachineActionPeripheralPrintBitmap()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintBitmap_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getBitmapId <em>Bitmap Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bitmap Id</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap#getBitmapId()
+	 * @see #getStatemachineActionPeripheralPrintBitmap()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintBitmap_BitmapId();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut <em>Statemachine Action Peripheral Print Cut</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Cut</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintCut();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getDevice()
+	 * @see #getStatemachineActionPeripheralPrintCut()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintCut_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut#getText()
+	 * @see #getStatemachineActionPeripheralPrintCut()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintCut_Text();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap <em>Statemachine Action Peripheral Print Register Bitmap</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Register Bitmap</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintRegisterBitmap();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getDevice()
+	 * @see #getStatemachineActionPeripheralPrintRegisterBitmap()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintRegisterBitmap_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getBitmapId <em>Bitmap Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bitmap Id</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getBitmapId()
+	 * @see #getStatemachineActionPeripheralPrintRegisterBitmap()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintRegisterBitmap_BitmapId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#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.statemachine.StatemachineActionPeripheralPrintRegisterBitmap#getName()
+	 * @see #getStatemachineActionPeripheralPrintRegisterBitmap()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintRegisterBitmap_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal <em>Statemachine Action Peripheral Print Normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Normal</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintNormal();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getDevice()
+	 * @see #getStatemachineActionPeripheralPrintNormal()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintNormal_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getText()
+	 * @see #getStatemachineActionPeripheralPrintNormal()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintNormal_Text();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getBarcodeType <em>Barcode Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Barcode Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal#getBarcodeType()
+	 * @see #getStatemachineActionPeripheralPrintNormal()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintNormal_BarcodeType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen <em>Statemachine Action Peripheral PT Open</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Open</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTOpen();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getDevice()
+	 * @see #getStatemachineActionPeripheralPTOpen()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTOpen_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getHost <em>Host</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Host</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getHost()
+	 * @see #getStatemachineActionPeripheralPTOpen()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTOpen_Host();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getPort <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Port</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen#getPort()
+	 * @see #getStatemachineActionPeripheralPTOpen()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTOpen_Port();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose <em>Statemachine Action Peripheral PT Close</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Close</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTClose();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose#getDevice()
+	 * @see #getStatemachineActionPeripheralPTClose()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTClose_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal <em>Statemachine Action Peripheral PT Reversal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Reversal</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTReversal();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getDevice()
+	 * @see #getStatemachineActionPeripheralPTReversal()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTReversal_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getPassword <em>Password</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Password</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getPassword()
+	 * @see #getStatemachineActionPeripheralPTReversal()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTReversal_Password();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getReceipt <em>Receipt</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Receipt</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal#getReceipt()
+	 * @see #getStatemachineActionPeripheralPTReversal()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTReversal_Receipt();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge <em>Statemachine Action Peripheral PT Acknowledge</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Acknowledge</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTAcknowledge();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge#getDevice()
+	 * @see #getStatemachineActionPeripheralPTAcknowledge()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTAcknowledge_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration <em>Statemachine Action Peripheral PT Registration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Registration</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTRegistration();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getDevice()
+	 * @see #getStatemachineActionPeripheralPTRegistration()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTRegistration_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getPassword <em>Password</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Password</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getPassword()
+	 * @see #getStatemachineActionPeripheralPTRegistration()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTRegistration_Password();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getConfiguration <em>Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Configuration</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration#getConfiguration()
+	 * @see #getStatemachineActionPeripheralPTRegistration()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPTRegistration_Configuration();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization <em>Statemachine Action Peripheral PT Authorization</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Authorization</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTAuthorization();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getDevice()
+	 * @see #getStatemachineActionPeripheralPTAuthorization()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTAuthorization_Device();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getAmount <em>Amount</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Amount</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization#getAmount()
+	 * @see #getStatemachineActionPeripheralPTAuthorization()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTAuthorization_Amount();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse <em>Statemachine Action Peripheral PT Response</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral PT Response</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPTResponse();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse#getDevice()
+	 * @see #getStatemachineActionPeripheralPTResponse()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPTResponse_Device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport <em>Statemachine Action Peripheral Print Report</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Peripheral Print Report</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport
+	 * @generated
+	 */
+	EClass getStatemachineActionPeripheralPrintReport();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getReport <em>Report</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Report</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getReport()
+	 * @see #getStatemachineActionPeripheralPrintReport()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintReport_Report();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#getKey()
+	 * @see #getStatemachineActionPeripheralPrintReport()
+	 * @generated
+	 */
+	EReference getStatemachineActionPeripheralPrintReport_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#isHasFilter <em>Has Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Filter</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport#isHasFilter()
+	 * @see #getStatemachineActionPeripheralPrintReport()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionPeripheralPrintReport_HasFilter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource <em>Statemachine Action Field Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSource();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString <em>Statemachine Action Field Source String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source String</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceString();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString#getText()
+	 * @see #getStatemachineActionFieldSourceString()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionFieldSourceString_Text();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber <em>Statemachine Action Field Source Number</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source Number</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceNumber();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber#getValue()
+	 * @see #getStatemachineActionFieldSourceNumber()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionFieldSourceNumber_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate <em>Statemachine Action Field Source Evaluate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source Evaluate</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceEvaluate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate#getEvaluationtype <em>Evaluationtype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Evaluationtype</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate#getEvaluationtype()
+	 * @see #getStatemachineActionFieldSourceEvaluate()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionFieldSourceEvaluate_Evaluationtype();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate <em>Statemachine Action Field Source Translate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source Translate</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceTranslate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate#getText <em>Text</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Text</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate#getText()
+	 * @see #getStatemachineActionFieldSourceTranslate()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionFieldSourceTranslate_Text();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute <em>Statemachine Action Field Source Dto Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source Dto Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceDtoAttribute();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getDto <em>Dto</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dto</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getDto()
+	 * @see #getStatemachineActionFieldSourceDtoAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldSourceDtoAttribute_Dto();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute#getAttribute()
+	 * @see #getStatemachineActionFieldSourceDtoAttribute()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldSourceDtoAttribute_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent <em>Statemachine Action Field Source Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Source Event</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSourceEvent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition <em>Statemachine Action Conditional Transition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Conditional Transition</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition
+	 * @generated
+	 */
+	EClass getStatemachineActionConditionalTransition();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getTransition <em>Transition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Transition</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getTransition()
+	 * @see #getStatemachineActionConditionalTransition()
+	 * @generated
+	 */
+	EReference getStatemachineActionConditionalTransition_Transition();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getGuard <em>Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Guard</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getGuard()
+	 * @see #getStatemachineActionConditionalTransition()
+	 * @generated
+	 */
+	EReference getStatemachineActionConditionalTransition_Guard();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getActions <em>Actions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Actions</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition#getActions()
+	 * @see #getStatemachineActionConditionalTransition()
+	 * @generated
+	 */
+	EReference getStatemachineActionConditionalTransition_Actions();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter <em>Statemachine Operation Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Operation Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter
+	 * @generated
+	 */
+	EClass getStatemachineOperationParameter();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter#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.statemachine.StatemachineOperationParameter#getSource()
+	 * @see #getStatemachineOperationParameter()
+	 * @generated
+	 */
+	EReference getStatemachineOperationParameter_Source();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation <em>Statemachine Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Operation</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperation
+	 * @generated
+	 */
+	EClass getStatemachineOperation();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getOperation <em>Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Operation</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getOperation()
+	 * @see #getStatemachineOperation()
+	 * @generated
+	 */
+	EReference getStatemachineOperation_Operation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getFirst <em>First</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>First</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getFirst()
+	 * @see #getStatemachineOperation()
+	 * @generated
+	 */
+	EReference getStatemachineOperation_First();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getMore <em>More</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>More</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getMore()
+	 * @see #getStatemachineOperation()
+	 * @generated
+	 */
+	EReference getStatemachineOperation_More();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard <em>Statemachine Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Guard</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard
+	 * @generated
+	 */
+	EClass getStatemachineGuard();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getGuard <em>Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Guard</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getGuard()
+	 * @see #getStatemachineGuard()
+	 * @generated
+	 */
+	EReference getStatemachineGuard_Guard();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#isHasOnFail <em>Has On Fail</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has On Fail</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard#isHasOnFail()
+	 * @see #getStatemachineGuard()
+	 * @generated
+	 */
+	EAttribute getStatemachineGuard_HasOnFail();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailDescription <em>On Fail Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>On Fail Description</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailDescription()
+	 * @see #getStatemachineGuard()
+	 * @generated
+	 */
+	EAttribute getStatemachineGuard_OnFailDescription();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailCaption <em>On Fail Caption</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>On Fail Caption</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailCaption()
+	 * @see #getStatemachineGuard()
+	 * @generated
+	 */
+	EAttribute getStatemachineGuard_OnFailCaption();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailType <em>On Fail Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>On Fail Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailType()
+	 * @see #getStatemachineGuard()
+	 * @generated
+	 */
+	EAttribute getStatemachineGuard_OnFailType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction <em>Statemachine Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Function</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFunction
+	 * @generated
+	 */
+	EClass getStatemachineFunction();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFunction <em>Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Function</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFunction()
+	 * @see #getStatemachineFunction()
+	 * @generated
+	 */
+	EReference getStatemachineFunction_Function();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFirst <em>First</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>First</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFirst()
+	 * @see #getStatemachineFunction()
+	 * @generated
+	 */
+	EReference getStatemachineFunction_First();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getMore <em>More</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>More</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getMore()
+	 * @see #getStatemachineFunction()
+	 * @generated
+	 */
+	EReference getStatemachineFunction_More();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve <em>Statemachine Storage Retrieve</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Storage Retrieve</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve
+	 * @generated
+	 */
+	EClass getStatemachineStorageRetrieve();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getKey()
+	 * @see #getStatemachineStorageRetrieve()
+	 * @generated
+	 */
+	EAttribute getStatemachineStorageRetrieve_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getAttribute()
+	 * @see #getStatemachineStorageRetrieve()
+	 * @generated
+	 */
+	EAttribute getStatemachineStorageRetrieve_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage <em>Statemachine Storage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Storage</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorage
+	 * @generated
+	 */
+	EClass getStatemachineStorage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getKey()
+	 * @see #getStatemachineStorage()
+	 * @generated
+	 */
+	EAttribute getStatemachineStorage_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getAttribute()
+	 * @see #getStatemachineStorage()
+	 * @generated
+	 */
+	EAttribute getStatemachineStorage_Attribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getContent <em>Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Content</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getContent()
+	 * @see #getStatemachineStorage()
+	 * @generated
+	 */
+	EReference getStatemachineStorage_Content();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation <em>Statemachine Action Field Concatenation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Concatenation</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldConcatenation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getFirst <em>First</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>First</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getFirst()
+	 * @see #getStatemachineActionFieldConcatenation()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldConcatenation_First();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getMore <em>More</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>More</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation#getMore()
+	 * @see #getStatemachineActionFieldConcatenation()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldConcatenation_More();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet <em>Statemachine Action Field Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Set</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldSet();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#getAttribute()
+	 * @see #getStatemachineActionFieldSet()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldSet_Attribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet#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.statemachine.StatemachineActionFieldSet#getSource()
+	 * @see #getStatemachineActionFieldSet()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldSet_Source();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke <em>Statemachine Action Field Keystroke</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Keystroke</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldKeystroke();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getAttribute()
+	 * @see #getStatemachineActionFieldKeystroke()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldKeystroke_Attribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getKeystroke <em>Keystroke</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Keystroke</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke#getKeystroke()
+	 * @see #getStatemachineActionFieldKeystroke()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionFieldKeystroke_Keystroke();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear <em>Statemachine Action Field Clear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Clear</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldClear();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear#getAttribute()
+	 * @see #getStatemachineActionFieldClear()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldClear_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet <em>Statemachine Action Field Get</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Get</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldGet();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet#getAttribute()
+	 * @see #getStatemachineActionFieldGet()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldGet_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove <em>Statemachine Action Field Remove</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Field Remove</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove
+	 * @generated
+	 */
+	EClass getStatemachineActionFieldRemove();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove#getAttribute()
+	 * @see #getStatemachineActionFieldRemove()
+	 * @generated
+	 */
+	EReference getStatemachineActionFieldRemove_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible <em>Statemachine Action Item Visible</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Item Visible</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible
+	 * @generated
+	 */
+	EClass getStatemachineActionItemVisible();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible#getAttribute()
+	 * @see #getStatemachineActionItemVisible()
+	 * @generated
+	 */
+	EReference getStatemachineActionItemVisible_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible <em>Statemachine Action Item Invisible</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Item Invisible</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible
+	 * @generated
+	 */
+	EClass getStatemachineActionItemInvisible();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible#getAttribute()
+	 * @see #getStatemachineActionItemInvisible()
+	 * @generated
+	 */
+	EReference getStatemachineActionItemInvisible_Attribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption <em>Statemachine Action Button Caption</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Button Caption</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption
+	 * @generated
+	 */
+	EClass getStatemachineActionButtonCaption();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getAttribute()
+	 * @see #getStatemachineActionButtonCaption()
+	 * @generated
+	 */
+	EReference getStatemachineActionButtonCaption_Attribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getCaption <em>Caption</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Caption</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption#getCaption()
+	 * @see #getStatemachineActionButtonCaption()
+	 * @generated
+	 */
+	EReference getStatemachineActionButtonCaption_Caption();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage <em>Statemachine Action Button Image</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Button Image</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage
+	 * @generated
+	 */
+	EClass getStatemachineActionButtonImage();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getAttribute()
+	 * @see #getStatemachineActionButtonImage()
+	 * @generated
+	 */
+	EReference getStatemachineActionButtonImage_Attribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getImage <em>Image</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Image</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage#getImage()
+	 * @see #getStatemachineActionButtonImage()
+	 * @generated
+	 */
+	EAttribute getStatemachineActionButtonImage_Image();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind <em>Statemachine Action DTO Find</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action DTO Find</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind
+	 * @generated
+	 */
+	EClass getStatemachineActionDTOFind();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getDto <em>Dto</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dto</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getDto()
+	 * @see #getStatemachineActionDTOFind()
+	 * @generated
+	 */
+	EReference getStatemachineActionDTOFind_Dto();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getAttribute()
+	 * @see #getStatemachineActionDTOFind()
+	 * @generated
+	 */
+	EReference getStatemachineActionDTOFind_Attribute();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getSearch <em>Search</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Search</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind#getSearch()
+	 * @see #getStatemachineActionDTOFind()
+	 * @generated
+	 */
+	EReference getStatemachineActionDTOFind_Search();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler <em>Statemachine Action Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Action Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler
+	 * @generated
+	 */
+	EClass getStatemachineActionScheduler();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler#getScheduler <em>Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler#getScheduler()
+	 * @see #getStatemachineActionScheduler()
+	 * @generated
+	 */
+	EReference getStatemachineActionScheduler_Scheduler();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineDTOType <em>Statemachine DTO Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine DTO Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDTOType
+	 * @generated
+	 */
+	EClass getStatemachineDTOType();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.statemachine.StatemachineDTOType#getAttributeType <em>Attribute Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDTOType#getAttributeType()
+	 * @see #getStatemachineDTOType()
+	 * @generated
+	 */
+	EReference getStatemachineDTOType_AttributeType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFieldType <em>Statemachine Field Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Statemachine Field Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFieldType
+	 * @generated
+	 */
+	EClass getStatemachineFieldType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFieldType#getAttributeType <em>Attribute Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Attribute Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFieldType#getAttributeType()
+	 * @see #getStatemachineFieldType()
+	 * @generated
+	 */
+	EAttribute getStatemachineFieldType_AttributeType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineInternalType <em>Statemachine Internal Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Internal Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+	 * @generated
+	 */
+	EEnum getStatemachineInternalType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType <em>Statemachine Control Button Event Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Control Button Event Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType
+	 * @generated
+	 */
+	EEnum getStatemachineControlButtonEventType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType <em>Statemachine Evaluation Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Evaluation Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType
+	 * @generated
+	 */
+	EEnum getStatemachineEvaluationType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType <em>Statemachine User Message Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine User Message Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType
+	 * @generated
+	 */
+	EEnum getStatemachineUserMessageType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType <em>Statemachine Line Display Cursor Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Line Display Cursor Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType
+	 * @generated
+	 */
+	EEnum getStatemachineLineDisplayCursorType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType <em>Statemachine Line Display Marquee Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Line Display Marquee Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType
+	 * @generated
+	 */
+	EEnum getStatemachineLineDisplayMarqueeType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat <em>Statemachine Line Display Marquee Format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Line Display Marquee Format</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat
+	 * @generated
+	 */
+	EEnum getStatemachineLineDisplayMarqueeFormat();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType <em>Statemachine Line Display Text Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Line Display Text Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+	 * @generated
+	 */
+	EEnum getStatemachineLineDisplayTextType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType <em>Statemachine Line Display Scroll Text Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine Line Display Scroll Text Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType
+	 * @generated
+	 */
+	EEnum getStatemachineLineDisplayScrollTextType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType <em>Statemachine POS Printer Barcode Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Statemachine POS Printer Barcode Type</em>'.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+	 * @generated
+	 */
+	EEnum getStatemachinePOSPrinterBarcodeType();
+
+	/**
+	 * 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
+	 */
+	StatemachineDSLFactory getStatemachineDSLFactory();
+
+	/**
+	 * <!-- 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.statemachine.impl.StatemachineModelImpl <em>Statemachine Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineModelImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineModel()
+		 * @generated
+		 */
+		EClass STATEMACHINE_MODEL = eINSTANCE.getStatemachineModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_MODEL__PACKAGES = eINSTANCE.getStatemachineModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineLazyResolverImpl <em>Statemachine Lazy Resolver</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineLazyResolverImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLazyResolver()
+		 * @generated
+		 */
+		EClass STATEMACHINE_LAZY_RESOLVER = eINSTANCE.getStatemachineLazyResolver();
+
+		/**
+		 * The meta object literal for the '<em><b>EResolve Proxy</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = eINSTANCE.getStatemachineLazyResolver__EResolveProxy__InternalEObject();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineBaseImpl <em>Statemachine Base</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineBaseImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineBase()
+		 * @generated
+		 */
+		EClass STATEMACHINE_BASE = eINSTANCE.getStatemachineBase();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_BASE__NAME = eINSTANCE.getStatemachineBase_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePackageImpl <em>Statemachine Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePackageImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePackage()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PACKAGE = eINSTANCE.getStatemachinePackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Statemachines</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_PACKAGE__STATEMACHINES = eINSTANCE.getStatemachinePackage_Statemachines();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl <em>Statemachine</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachine()
+		 * @generated
+		 */
+		EClass STATEMACHINE = eINSTANCE.getStatemachine();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE__DESCRIPTION = eINSTANCE.getStatemachine_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Description Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE__DESCRIPTION_VALUE = eINSTANCE.getStatemachine_DescriptionValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Function Group</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__FUNCTION_GROUP = eINSTANCE.getStatemachine_FunctionGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Initial Event</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__INITIAL_EVENT = eINSTANCE.getStatemachine_InitialEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Initial State</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__INITIAL_STATE = eINSTANCE.getStatemachine_InitialState();
+
+		/**
+		 * The meta object literal for the '<em><b>Events</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__EVENTS = eINSTANCE.getStatemachine_Events();
+
+		/**
+		 * The meta object literal for the '<em><b>Controls</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__CONTROLS = eINSTANCE.getStatemachine_Controls();
+
+		/**
+		 * The meta object literal for the '<em><b>States</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE__STATES = eINSTANCE.getStatemachine_States();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControl <em>Statemachine Control</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControl()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL = eINSTANCE.getStatemachineControl();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl <em>Statemachine Control Button</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButton()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON = eINSTANCE.getStatemachineControlButton();
+
+		/**
+		 * The meta object literal for the '<em><b>Event Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE = eINSTANCE.getStatemachineControlButton_EventType();
+
+		/**
+		 * The meta object literal for the '<em><b>Buttons</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_BUTTON__BUTTONS = eINSTANCE.getStatemachineControlButton_Buttons();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl <em>Statemachine Control Field</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlField()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_FIELD = eINSTANCE.getStatemachineControlField();
+
+		/**
+		 * The meta object literal for the '<em><b>Fields</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_FIELD__FIELDS = eINSTANCE.getStatemachineControlField_Fields();
+
+		/**
+		 * The meta object literal for the '<em><b>Layouts</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_FIELD__LAYOUTS = eINSTANCE.getStatemachineControlField_Layouts();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOImpl <em>Statemachine Control DTO</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlDTO()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_DTO = eINSTANCE.getStatemachineControlDTO();
+
+		/**
+		 * The meta object literal for the '<em><b>Dtos</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_DTO__DTOS = eINSTANCE.getStatemachineControlDTO_Dtos();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerImpl <em>Statemachine Control Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlScheduler()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_SCHEDULER = eINSTANCE.getStatemachineControlScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Schedulers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS = eINSTANCE.getStatemachineControlScheduler_Schedulers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl <em>Statemachine Control Peripheral</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlPeripheral()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_PERIPHERAL = eINSTANCE.getStatemachineControlPeripheral();
+
+		/**
+		 * The meta object literal for the '<em><b>Line Displays</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS = eINSTANCE.getStatemachineControlPeripheral_LineDisplays();
+
+		/**
+		 * The meta object literal for the '<em><b>Pos Printers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS = eINSTANCE.getStatemachineControlPeripheral_PosPrinters();
+
+		/**
+		 * The meta object literal for the '<em><b>Cash Drawers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS = eINSTANCE.getStatemachineControlPeripheral_CashDrawers();
+
+		/**
+		 * The meta object literal for the '<em><b>Payment Terminals</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS = eINSTANCE.getStatemachineControlPeripheral_PaymentTerminals();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl <em>Statemachine Control Button Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttribute()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE = eINSTANCE.getStatemachineControlButtonAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Image</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE = eINSTANCE.getStatemachineControlButtonAttribute_HasImage();
+
+		/**
+		 * The meta object literal for the '<em><b>Image</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE = eINSTANCE.getStatemachineControlButtonAttribute_Image();
+
+		/**
+		 * The meta object literal for the '<em><b>Event</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT = eINSTANCE.getStatemachineControlButtonAttribute_Event();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent <em>Statemachine Control Button Attribute Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEvent()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT = eINSTANCE.getStatemachineControlButtonAttributeEvent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventKeyboardImpl <em>Statemachine Control Button Attribute Event Keyboard</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventKeyboardImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventKeyboard()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD = eINSTANCE.getStatemachineControlButtonAttributeEventKeyboard();
+
+		/**
+		 * The meta object literal for the '<em><b>Keystroke</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE = eINSTANCE.getStatemachineControlButtonAttributeEventKeyboard_Keystroke();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventIdentityImpl <em>Statemachine Control Button Attribute Event Identity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventIdentityImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventIdentity()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY = eINSTANCE.getStatemachineControlButtonAttributeEventIdentity();
+
+		/**
+		 * The meta object literal for the '<em><b>Identity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY = eINSTANCE.getStatemachineControlButtonAttributeEventIdentity_Identity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventEventImpl <em>Statemachine Control Button Attribute Event Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventEventImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonAttributeEventEvent()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT = eINSTANCE.getStatemachineControlButtonAttributeEventEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Event</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT = eINSTANCE.getStatemachineControlButtonAttributeEventEvent_Event();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility <em>Statemachine Control Visibility</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlVisibility()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_VISIBILITY = eINSTANCE.getStatemachineControlVisibility();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldAttributeImpl <em>Statemachine Control Field Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldAttributeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlFieldAttribute()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_FIELD_ATTRIBUTE = eINSTANCE.getStatemachineControlFieldAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE = eINSTANCE.getStatemachineControlFieldAttribute_AttributeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldLayoutImpl <em>Statemachine Control Field Layout</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldLayoutImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlFieldLayout()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_FIELD_LAYOUT = eINSTANCE.getStatemachineControlFieldLayout();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl <em>Statemachine Control DTO Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlDTOAttribute()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_DTO_ATTRIBUTE = eINSTANCE.getStatemachineControlDTOAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE = eINSTANCE.getStatemachineControlDTOAttribute_AttributeType();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Event</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT = eINSTANCE.getStatemachineControlDTOAttribute_HasEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Event</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT = eINSTANCE.getStatemachineControlDTOAttribute_Event();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice <em>Statemachine Peripheral Device</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevice()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PERIPHERAL_DEVICE = eINSTANCE.getStatemachinePeripheralDevice();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceLineDisplayImpl <em>Statemachine Peripheral Device Line Display</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceLineDisplayImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDeviceLineDisplay()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY = eINSTANCE.getStatemachinePeripheralDeviceLineDisplay();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePOSPrinterImpl <em>Statemachine Peripheral Device POS Printer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePOSPrinterImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevicePOSPrinter()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER = eINSTANCE.getStatemachinePeripheralDevicePOSPrinter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceCashDrawerImpl <em>Statemachine Peripheral Device Cash Drawer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDeviceCashDrawerImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDeviceCashDrawer()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER = eINSTANCE.getStatemachinePeripheralDeviceCashDrawer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePTImpl <em>Statemachine Peripheral Device PT</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachinePeripheralDevicePTImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePeripheralDevicePT()
+		 * @generated
+		 */
+		EClass STATEMACHINE_PERIPHERAL_DEVICE_PT = eINSTANCE.getStatemachinePeripheralDevicePT();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl <em>Statemachine Control Scheduler Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlSchedulerAttribute()
+		 * @generated
+		 */
+		EClass STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE = eINSTANCE.getStatemachineControlSchedulerAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Delay</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY = eINSTANCE.getStatemachineControlSchedulerAttribute_Delay();
+
+		/**
+		 * The meta object literal for the '<em><b>Event</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT = eINSTANCE.getStatemachineControlSchedulerAttribute_Event();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineEventImpl <em>Statemachine Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineEventImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineEvent()
+		 * @generated
+		 */
+		EClass STATEMACHINE_EVENT = eINSTANCE.getStatemachineEvent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl <em>Statemachine State</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineState()
+		 * @generated
+		 */
+		EClass STATEMACHINE_STATE = eINSTANCE.getStatemachineState();
+
+		/**
+		 * The meta object literal for the '<em><b>Triggers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_STATE__TRIGGERS = eINSTANCE.getStatemachineState_Triggers();
+
+		/**
+		 * The meta object literal for the '<em><b>Identity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_STATE__IDENTITY = eINSTANCE.getStatemachineState_Identity();
+
+		/**
+		 * The meta object literal for the '<em><b>Keystroke</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_STATE__KEYSTROKE = eINSTANCE.getStatemachineState_Keystroke();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Key Operation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_STATE__HAS_KEY_OPERATION = eINSTANCE.getStatemachineState_HasKeyOperation();
+
+		/**
+		 * The meta object literal for the '<em><b>Key Operation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_STATE__KEY_OPERATION = eINSTANCE.getStatemachineState_KeyOperation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl <em>Statemachine Trigger</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineTrigger()
+		 * @generated
+		 */
+		EClass STATEMACHINE_TRIGGER = eINSTANCE.getStatemachineTrigger();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Transition</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_TRIGGER__HAS_TRANSITION = eINSTANCE.getStatemachineTrigger_HasTransition();
+
+		/**
+		 * The meta object literal for the '<em><b>Transition</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_TRIGGER__TRANSITION = eINSTANCE.getStatemachineTrigger_Transition();
+
+		/**
+		 * The meta object literal for the '<em><b>Triggers</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_TRIGGER__TRIGGERS = eINSTANCE.getStatemachineTrigger_Triggers();
+
+		/**
+		 * The meta object literal for the '<em><b>Guards</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_TRIGGER__GUARDS = eINSTANCE.getStatemachineTrigger_Guards();
+
+		/**
+		 * The meta object literal for the '<em><b>Actions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_TRIGGER__ACTIONS = eINSTANCE.getStatemachineTrigger_Actions();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineAction <em>Statemachine Action</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineAction
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineAction()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION = eINSTANCE.getStatemachineAction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl <em>Statemachine Action Peripheral Blink Rate</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralBlinkRate()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE = eINSTANCE.getStatemachineActionPeripheralBlinkRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE = eINSTANCE.getStatemachineActionPeripheralBlinkRate_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Blink Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE = eINSTANCE.getStatemachineActionPeripheralBlinkRate_BlinkRate();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralClearImpl <em>Statemachine Action Peripheral Clear</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralClearImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralClear()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_CLEAR = eINSTANCE.getStatemachineActionPeripheralClear();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE = eINSTANCE.getStatemachineActionPeripheralClear_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl <em>Statemachine Action Peripheral Create Window</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralCreateWindow()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW = eINSTANCE.getStatemachineActionPeripheralCreateWindow();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE = eINSTANCE.getStatemachineActionPeripheralCreateWindow_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Viewport Row</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW = eINSTANCE.getStatemachineActionPeripheralCreateWindow_ViewportRow();
+
+		/**
+		 * The meta object literal for the '<em><b>Viewport Column</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN = eINSTANCE.getStatemachineActionPeripheralCreateWindow_ViewportColumn();
+
+		/**
+		 * The meta object literal for the '<em><b>Viewport Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT = eINSTANCE.getStatemachineActionPeripheralCreateWindow_ViewportHeight();
+
+		/**
+		 * The meta object literal for the '<em><b>Viewport Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH = eINSTANCE.getStatemachineActionPeripheralCreateWindow_ViewportWidth();
+
+		/**
+		 * The meta object literal for the '<em><b>Window Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT = eINSTANCE.getStatemachineActionPeripheralCreateWindow_WindowHeight();
+
+		/**
+		 * The meta object literal for the '<em><b>Window Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH = eINSTANCE.getStatemachineActionPeripheralCreateWindow_WindowWidth();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl <em>Statemachine Action Peripheral Cursor Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralCursorType()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE = eINSTANCE.getStatemachineActionPeripheralCursorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE = eINSTANCE.getStatemachineActionPeripheralCursorType_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Cursor Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE = eINSTANCE.getStatemachineActionPeripheralCursorType_CursorType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDestroyWindowImpl <em>Statemachine Action Peripheral Destroy Window</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDestroyWindowImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDestroyWindow()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW = eINSTANCE.getStatemachineActionPeripheralDestroyWindow();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE = eINSTANCE.getStatemachineActionPeripheralDestroyWindow_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl <em>Statemachine Action Peripheral Device Brightness</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDeviceBrightness()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS = eINSTANCE.getStatemachineActionPeripheralDeviceBrightness();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE = eINSTANCE.getStatemachineActionPeripheralDeviceBrightness_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Brightness</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS = eINSTANCE.getStatemachineActionPeripheralDeviceBrightness_Brightness();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl <em>Statemachine Action Peripheral Display Bitmap</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayBitmap()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP = eINSTANCE.getStatemachineActionPeripheralDisplayBitmap();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE = eINSTANCE.getStatemachineActionPeripheralDisplayBitmap_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Bitmap Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID = eINSTANCE.getStatemachineActionPeripheralDisplayBitmap_BitmapId();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl <em>Statemachine Action Peripheral Display Text</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayText()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT = eINSTANCE.getStatemachineActionPeripheralDisplayText();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE = eINSTANCE.getStatemachineActionPeripheralDisplayText_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT = eINSTANCE.getStatemachineActionPeripheralDisplayText_Text();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE = eINSTANCE.getStatemachineActionPeripheralDisplayText_HasType();
+
+		/**
+		 * The meta object literal for the '<em><b>Text Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE = eINSTANCE.getStatemachineActionPeripheralDisplayText_TextType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl <em>Statemachine Action Peripheral Display Text At</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralDisplayTextAt()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Row</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_Row();
+
+		/**
+		 * The meta object literal for the '<em><b>Column</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_Column();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_Text();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_HasType();
+
+		/**
+		 * The meta object literal for the '<em><b>Text Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE = eINSTANCE.getStatemachineActionPeripheralDisplayTextAt_TextType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl <em>Statemachine Action Peripheral Inter Character Wait</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralInterCharacterWait()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT = eINSTANCE.getStatemachineActionPeripheralInterCharacterWait();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE = eINSTANCE.getStatemachineActionPeripheralInterCharacterWait_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Wait</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT = eINSTANCE.getStatemachineActionPeripheralInterCharacterWait_Wait();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl <em>Statemachine Action Peripheral Marquee Format</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeFormat()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT = eINSTANCE.getStatemachineActionPeripheralMarqueeFormat();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE = eINSTANCE.getStatemachineActionPeripheralMarqueeFormat_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Format</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT = eINSTANCE.getStatemachineActionPeripheralMarqueeFormat_Format();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl <em>Statemachine Action Peripheral Marquee Repeat Wait</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeRepeatWait()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT = eINSTANCE.getStatemachineActionPeripheralMarqueeRepeatWait();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE = eINSTANCE.getStatemachineActionPeripheralMarqueeRepeatWait_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Wait</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT = eINSTANCE.getStatemachineActionPeripheralMarqueeRepeatWait_Wait();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl <em>Statemachine Action Peripheral Marquee Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeType()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE = eINSTANCE.getStatemachineActionPeripheralMarqueeType();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE = eINSTANCE.getStatemachineActionPeripheralMarqueeType_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Marquee Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE = eINSTANCE.getStatemachineActionPeripheralMarqueeType_MarqueeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl <em>Statemachine Action Peripheral Marquee Unit Wait</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralMarqueeUnitWait()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT = eINSTANCE.getStatemachineActionPeripheralMarqueeUnitWait();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE = eINSTANCE.getStatemachineActionPeripheralMarqueeUnitWait_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Wait</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT = eINSTANCE.getStatemachineActionPeripheralMarqueeUnitWait_Wait();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl <em>Statemachine Action Peripheral Scroll</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralScroll()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_SCROLL = eINSTANCE.getStatemachineActionPeripheralScroll();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE = eINSTANCE.getStatemachineActionPeripheralScroll_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Direction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION = eINSTANCE.getStatemachineActionPeripheralScroll_Direction();
+
+		/**
+		 * The meta object literal for the '<em><b>Units</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS = eINSTANCE.getStatemachineActionPeripheralScroll_Units();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralOpenDrawerImpl <em>Statemachine Action Peripheral Open Drawer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralOpenDrawerImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralOpenDrawer()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER = eINSTANCE.getStatemachineActionPeripheralOpenDrawer();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE = eINSTANCE.getStatemachineActionPeripheralOpenDrawer_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl <em>Statemachine Action Peripheral Print Barcode</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintBarcode()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE = eINSTANCE.getStatemachineActionPeripheralPrintBarcode();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE = eINSTANCE.getStatemachineActionPeripheralPrintBarcode_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Data</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA = eINSTANCE.getStatemachineActionPeripheralPrintBarcode_Data();
+
+		/**
+		 * The meta object literal for the '<em><b>Barcode Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE = eINSTANCE.getStatemachineActionPeripheralPrintBarcode_BarcodeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl <em>Statemachine Action Peripheral Print Bitmap</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintBitmap()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP = eINSTANCE.getStatemachineActionPeripheralPrintBitmap();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE = eINSTANCE.getStatemachineActionPeripheralPrintBitmap_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Bitmap Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID = eINSTANCE.getStatemachineActionPeripheralPrintBitmap_BitmapId();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl <em>Statemachine Action Peripheral Print Cut</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintCut()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT = eINSTANCE.getStatemachineActionPeripheralPrintCut();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE = eINSTANCE.getStatemachineActionPeripheralPrintCut_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT = eINSTANCE.getStatemachineActionPeripheralPrintCut_Text();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl <em>Statemachine Action Peripheral Print Register Bitmap</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintRegisterBitmap()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP = eINSTANCE.getStatemachineActionPeripheralPrintRegisterBitmap();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE = eINSTANCE.getStatemachineActionPeripheralPrintRegisterBitmap_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Bitmap Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID = eINSTANCE.getStatemachineActionPeripheralPrintRegisterBitmap_BitmapId();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME = eINSTANCE.getStatemachineActionPeripheralPrintRegisterBitmap_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl <em>Statemachine Action Peripheral Print Normal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintNormal()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL = eINSTANCE.getStatemachineActionPeripheralPrintNormal();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE = eINSTANCE.getStatemachineActionPeripheralPrintNormal_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT = eINSTANCE.getStatemachineActionPeripheralPrintNormal_Text();
+
+		/**
+		 * The meta object literal for the '<em><b>Barcode Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE = eINSTANCE.getStatemachineActionPeripheralPrintNormal_BarcodeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl <em>Statemachine Action Peripheral PT Open</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTOpen()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN = eINSTANCE.getStatemachineActionPeripheralPTOpen();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTOpen_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Host</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST = eINSTANCE.getStatemachineActionPeripheralPTOpen_Host();
+
+		/**
+		 * The meta object literal for the '<em><b>Port</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT = eINSTANCE.getStatemachineActionPeripheralPTOpen_Port();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTCloseImpl <em>Statemachine Action Peripheral PT Close</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTCloseImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTClose()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE = eINSTANCE.getStatemachineActionPeripheralPTClose();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTClose_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl <em>Statemachine Action Peripheral PT Reversal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTReversal()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL = eINSTANCE.getStatemachineActionPeripheralPTReversal();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTReversal_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Password</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD = eINSTANCE.getStatemachineActionPeripheralPTReversal_Password();
+
+		/**
+		 * The meta object literal for the '<em><b>Receipt</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT = eINSTANCE.getStatemachineActionPeripheralPTReversal_Receipt();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAcknowledgeImpl <em>Statemachine Action Peripheral PT Acknowledge</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAcknowledgeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTAcknowledge()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE = eINSTANCE.getStatemachineActionPeripheralPTAcknowledge();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTAcknowledge_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl <em>Statemachine Action Peripheral PT Registration</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTRegistration()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION = eINSTANCE.getStatemachineActionPeripheralPTRegistration();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTRegistration_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Password</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD = eINSTANCE.getStatemachineActionPeripheralPTRegistration_Password();
+
+		/**
+		 * The meta object literal for the '<em><b>Configuration</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION = eINSTANCE.getStatemachineActionPeripheralPTRegistration_Configuration();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl <em>Statemachine Action Peripheral PT Authorization</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTAuthorization()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION = eINSTANCE.getStatemachineActionPeripheralPTAuthorization();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTAuthorization_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Amount</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT = eINSTANCE.getStatemachineActionPeripheralPTAuthorization_Amount();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTResponseImpl <em>Statemachine Action Peripheral PT Response</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTResponseImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPTResponse()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE = eINSTANCE.getStatemachineActionPeripheralPTResponse();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE = eINSTANCE.getStatemachineActionPeripheralPTResponse_Device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl <em>Statemachine Action Peripheral Print Report</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionPeripheralPrintReport()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT = eINSTANCE.getStatemachineActionPeripheralPrintReport();
+
+		/**
+		 * The meta object literal for the '<em><b>Report</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT = eINSTANCE.getStatemachineActionPeripheralPrintReport_Report();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY = eINSTANCE.getStatemachineActionPeripheralPrintReport_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Filter</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER = eINSTANCE.getStatemachineActionPeripheralPrintReport_HasFilter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource <em>Statemachine Action Field Source</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSource()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE = eINSTANCE.getStatemachineActionFieldSource();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceStringImpl <em>Statemachine Action Field Source String</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceStringImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceString()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_STRING = eINSTANCE.getStatemachineActionFieldSourceString();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT = eINSTANCE.getStatemachineActionFieldSourceString_Text();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceNumberImpl <em>Statemachine Action Field Source Number</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceNumberImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceNumber()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER = eINSTANCE.getStatemachineActionFieldSourceNumber();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE = eINSTANCE.getStatemachineActionFieldSourceNumber_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEvaluateImpl <em>Statemachine Action Field Source Evaluate</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEvaluateImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceEvaluate()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE = eINSTANCE.getStatemachineActionFieldSourceEvaluate();
+
+		/**
+		 * The meta object literal for the '<em><b>Evaluationtype</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE = eINSTANCE.getStatemachineActionFieldSourceEvaluate_Evaluationtype();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceTranslateImpl <em>Statemachine Action Field Source Translate</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceTranslateImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceTranslate()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE = eINSTANCE.getStatemachineActionFieldSourceTranslate();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT = eINSTANCE.getStatemachineActionFieldSourceTranslate_Text();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl <em>Statemachine Action Field Source Dto Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceDtoAttribute()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE = eINSTANCE.getStatemachineActionFieldSourceDtoAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO = eINSTANCE.getStatemachineActionFieldSourceDtoAttribute_Dto();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldSourceDtoAttribute_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEventImpl <em>Statemachine Action Field Source Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEventImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSourceEvent()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SOURCE_EVENT = eINSTANCE.getStatemachineActionFieldSourceEvent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl <em>Statemachine Action Conditional Transition</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionConditionalTransition()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_CONDITIONAL_TRANSITION = eINSTANCE.getStatemachineActionConditionalTransition();
+
+		/**
+		 * The meta object literal for the '<em><b>Transition</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION = eINSTANCE.getStatemachineActionConditionalTransition_Transition();
+
+		/**
+		 * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD = eINSTANCE.getStatemachineActionConditionalTransition_Guard();
+
+		/**
+		 * The meta object literal for the '<em><b>Actions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS = eINSTANCE.getStatemachineActionConditionalTransition_Actions();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationParameterImpl <em>Statemachine Operation Parameter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationParameterImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineOperationParameter()
+		 * @generated
+		 */
+		EClass STATEMACHINE_OPERATION_PARAMETER = eINSTANCE.getStatemachineOperationParameter();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_OPERATION_PARAMETER__SOURCE = eINSTANCE.getStatemachineOperationParameter_Source();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl <em>Statemachine Operation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineOperation()
+		 * @generated
+		 */
+		EClass STATEMACHINE_OPERATION = eINSTANCE.getStatemachineOperation();
+
+		/**
+		 * The meta object literal for the '<em><b>Operation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_OPERATION__OPERATION = eINSTANCE.getStatemachineOperation_Operation();
+
+		/**
+		 * The meta object literal for the '<em><b>First</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_OPERATION__FIRST = eINSTANCE.getStatemachineOperation_First();
+
+		/**
+		 * The meta object literal for the '<em><b>More</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_OPERATION__MORE = eINSTANCE.getStatemachineOperation_More();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl <em>Statemachine Guard</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineGuard()
+		 * @generated
+		 */
+		EClass STATEMACHINE_GUARD = eINSTANCE.getStatemachineGuard();
+
+		/**
+		 * The meta object literal for the '<em><b>Guard</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_GUARD__GUARD = eINSTANCE.getStatemachineGuard_Guard();
+
+		/**
+		 * The meta object literal for the '<em><b>Has On Fail</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_GUARD__HAS_ON_FAIL = eINSTANCE.getStatemachineGuard_HasOnFail();
+
+		/**
+		 * The meta object literal for the '<em><b>On Fail Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION = eINSTANCE.getStatemachineGuard_OnFailDescription();
+
+		/**
+		 * The meta object literal for the '<em><b>On Fail Caption</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_GUARD__ON_FAIL_CAPTION = eINSTANCE.getStatemachineGuard_OnFailCaption();
+
+		/**
+		 * The meta object literal for the '<em><b>On Fail Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_GUARD__ON_FAIL_TYPE = eINSTANCE.getStatemachineGuard_OnFailType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl <em>Statemachine Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineFunction()
+		 * @generated
+		 */
+		EClass STATEMACHINE_FUNCTION = eINSTANCE.getStatemachineFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Function</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_FUNCTION__FUNCTION = eINSTANCE.getStatemachineFunction_Function();
+
+		/**
+		 * The meta object literal for the '<em><b>First</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_FUNCTION__FIRST = eINSTANCE.getStatemachineFunction_First();
+
+		/**
+		 * The meta object literal for the '<em><b>More</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_FUNCTION__MORE = eINSTANCE.getStatemachineFunction_More();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl <em>Statemachine Storage Retrieve</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineStorageRetrieve()
+		 * @generated
+		 */
+		EClass STATEMACHINE_STORAGE_RETRIEVE = eINSTANCE.getStatemachineStorageRetrieve();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_STORAGE_RETRIEVE__KEY = eINSTANCE.getStatemachineStorageRetrieve_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE = eINSTANCE.getStatemachineStorageRetrieve_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl <em>Statemachine Storage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineStorage()
+		 * @generated
+		 */
+		EClass STATEMACHINE_STORAGE = eINSTANCE.getStatemachineStorage();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_STORAGE__KEY = eINSTANCE.getStatemachineStorage_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_STORAGE__ATTRIBUTE = eINSTANCE.getStatemachineStorage_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_STORAGE__CONTENT = eINSTANCE.getStatemachineStorage_Content();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl <em>Statemachine Action Field Concatenation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldConcatenation()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_CONCATENATION = eINSTANCE.getStatemachineActionFieldConcatenation();
+
+		/**
+		 * The meta object literal for the '<em><b>First</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST = eINSTANCE.getStatemachineActionFieldConcatenation_First();
+
+		/**
+		 * The meta object literal for the '<em><b>More</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE = eINSTANCE.getStatemachineActionFieldConcatenation_More();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl <em>Statemachine Action Field Set</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldSet()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_SET = eINSTANCE.getStatemachineActionFieldSet();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldSet_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_SET__SOURCE = eINSTANCE.getStatemachineActionFieldSet_Source();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl <em>Statemachine Action Field Keystroke</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldKeystroke()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_KEYSTROKE = eINSTANCE.getStatemachineActionFieldKeystroke();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldKeystroke_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Keystroke</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE = eINSTANCE.getStatemachineActionFieldKeystroke_Keystroke();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldClearImpl <em>Statemachine Action Field Clear</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldClearImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldClear()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_CLEAR = eINSTANCE.getStatemachineActionFieldClear();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldClear_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldGetImpl <em>Statemachine Action Field Get</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldGetImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldGet()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_GET = eINSTANCE.getStatemachineActionFieldGet();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldGet_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldRemoveImpl <em>Statemachine Action Field Remove</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldRemoveImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionFieldRemove()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_FIELD_REMOVE = eINSTANCE.getStatemachineActionFieldRemove();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE = eINSTANCE.getStatemachineActionFieldRemove_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemVisibleImpl <em>Statemachine Action Item Visible</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemVisibleImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionItemVisible()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_ITEM_VISIBLE = eINSTANCE.getStatemachineActionItemVisible();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE = eINSTANCE.getStatemachineActionItemVisible_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemInvisibleImpl <em>Statemachine Action Item Invisible</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemInvisibleImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionItemInvisible()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_ITEM_INVISIBLE = eINSTANCE.getStatemachineActionItemInvisible();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE = eINSTANCE.getStatemachineActionItemInvisible_Attribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl <em>Statemachine Action Button Caption</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionButtonCaption()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_BUTTON_CAPTION = eINSTANCE.getStatemachineActionButtonCaption();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE = eINSTANCE.getStatemachineActionButtonCaption_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Caption</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION = eINSTANCE.getStatemachineActionButtonCaption_Caption();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl <em>Statemachine Action Button Image</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionButtonImage()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_BUTTON_IMAGE = eINSTANCE.getStatemachineActionButtonImage();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE = eINSTANCE.getStatemachineActionButtonImage_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Image</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE = eINSTANCE.getStatemachineActionButtonImage_Image();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl <em>Statemachine Action DTO Find</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionDTOFind()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_DTO_FIND = eINSTANCE.getStatemachineActionDTOFind();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_DTO_FIND__DTO = eINSTANCE.getStatemachineActionDTOFind_Dto();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE = eINSTANCE.getStatemachineActionDTOFind_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Search</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_DTO_FIND__SEARCH = eINSTANCE.getStatemachineActionDTOFind_Search();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionSchedulerImpl <em>Statemachine Action Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionSchedulerImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineActionScheduler()
+		 * @generated
+		 */
+		EClass STATEMACHINE_ACTION_SCHEDULER = eINSTANCE.getStatemachineActionScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Scheduler</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_ACTION_SCHEDULER__SCHEDULER = eINSTANCE.getStatemachineActionScheduler_Scheduler();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineDTOTypeImpl <em>Statemachine DTO Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDTOTypeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineDTOType()
+		 * @generated
+		 */
+		EClass STATEMACHINE_DTO_TYPE = eINSTANCE.getStatemachineDTOType();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE = eINSTANCE.getStatemachineDTOType_AttributeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFieldTypeImpl <em>Statemachine Field Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineFieldTypeImpl
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineFieldType()
+		 * @generated
+		 */
+		EClass STATEMACHINE_FIELD_TYPE = eINSTANCE.getStatemachineFieldType();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE = eINSTANCE.getStatemachineFieldType_AttributeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineInternalType <em>Statemachine Internal Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineInternalType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_INTERNAL_TYPE = eINSTANCE.getStatemachineInternalType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType <em>Statemachine Control Button Event Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineControlButtonEventType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_CONTROL_BUTTON_EVENT_TYPE = eINSTANCE.getStatemachineControlButtonEventType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType <em>Statemachine Evaluation Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineEvaluationType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_EVALUATION_TYPE = eINSTANCE.getStatemachineEvaluationType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType <em>Statemachine User Message Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineUserMessageType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_USER_MESSAGE_TYPE = eINSTANCE.getStatemachineUserMessageType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType <em>Statemachine Line Display Cursor Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayCursorType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_LINE_DISPLAY_CURSOR_TYPE = eINSTANCE.getStatemachineLineDisplayCursorType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType <em>Statemachine Line Display Marquee Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayMarqueeType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_LINE_DISPLAY_MARQUEE_TYPE = eINSTANCE.getStatemachineLineDisplayMarqueeType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat <em>Statemachine Line Display Marquee Format</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayMarqueeFormat()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_LINE_DISPLAY_MARQUEE_FORMAT = eINSTANCE.getStatemachineLineDisplayMarqueeFormat();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType <em>Statemachine Line Display Text Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayTextType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_LINE_DISPLAY_TEXT_TYPE = eINSTANCE.getStatemachineLineDisplayTextType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType <em>Statemachine Line Display Scroll Text Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachineLineDisplayScrollTextType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_LINE_DISPLAY_SCROLL_TEXT_TYPE = eINSTANCE.getStatemachineLineDisplayScrollTextType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType <em>Statemachine POS Printer Barcode Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType
+		 * @see org.eclipse.osbp.xtext.statemachine.impl.StatemachineDSLPackageImpl#getStatemachinePOSPrinterBarcodeType()
+		 * @generated
+		 */
+		EEnum STATEMACHINE_POS_PRINTER_BARCODE_TYPE = eINSTANCE.getStatemachinePOSPrinterBarcodeType();
+
+		/**
+		 * 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.statemachine.impl.StatemachineDSLPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+	}
+
+} //StatemachineDSLPackage
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDTOType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDTOType.java
new file mode 100644
index 0000000..d7942e6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDTOType.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine DTO Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineDTOType#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineDTOType()
+ * @model
+ * @generated
+ */
+public interface StatemachineDTOType extends StatemachineLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Attribute Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute Type</em>' reference.
+	 * @see #setAttributeType(LDto)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineDTOType_AttributeType()
+	 * @model
+	 * @generated
+	 */
+	LDto getAttributeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineDTOType#getAttributeType <em>Attribute Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute Type</em>' reference.
+	 * @see #getAttributeType()
+	 * @generated
+	 */
+	void setAttributeType(LDto value);
+
+} // StatemachineDTOType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvaluationType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvaluationType.java
new file mode 100644
index 0000000..911c451
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvaluationType.java
@@ -0,0 +1,530 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Evaluation Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineEvaluationType()
+ * @model
+ * @generated
+ */
+public enum StatemachineEvaluationType implements Enumerator {
+	/**
+	 * The '<em><b>IP ADDRESS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IP_ADDRESS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IP_ADDRESS(0, "IP_ADDRESS", "getIPAddress"),
+
+	/**
+	 * The '<em><b>NOW</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NOW_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NOW(0, "NOW", "getNow"),
+
+	/**
+	 * The '<em><b>USER AGENT INFO</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_AGENT_INFO_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_AGENT_INFO(0, "USER_AGENT_INFO", "getUserAgentInfo"),
+
+	/**
+	 * The '<em><b>IS TOUCH DEVICE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IS_TOUCH_DEVICE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IS_TOUCH_DEVICE(0, "IS_TOUCH_DEVICE", "isTouchDevice"),
+
+	/**
+	 * The '<em><b>IS HTTPS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IS_HTTPS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IS_HTTPS(0, "IS_HTTPS", "isHttps"),
+
+	/**
+	 * The '<em><b>BROWSER LOCALE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BROWSER_LOCALE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BROWSER_LOCALE(0, "BROWSER_LOCALE", "getBrowserLocale"),
+
+	/**
+	 * The '<em><b>USER NAME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_NAME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_NAME(0, "USER_NAME", "getUserName"),
+
+	/**
+	 * The '<em><b>USER PASSWORD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_PASSWORD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_PASSWORD(0, "USER_PASSWORD", "getUserPassword"),
+
+	/**
+	 * The '<em><b>USER EMAIL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_EMAIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_EMAIL(0, "USER_EMAIL", "getUserEmail"),
+
+	/**
+	 * The '<em><b>USER POSITION</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_POSITION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_POSITION(0, "USER_POSITION", "getUserPosition"),
+
+	/**
+	 * The '<em><b>USER PRTSERVICE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #USER_PRTSERVICE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	USER_PRTSERVICE(0, "USER_PRTSERVICE", "getUserPrintService"),
+
+	/**
+	 * The '<em><b>SCREEN WIDTH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SCREEN_WIDTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SCREEN_WIDTH(0, "SCREEN_WIDTH", "getSceenWidth"),
+
+	/**
+	 * The '<em><b>SCREEN HEIGHT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SCREEN_HEIGHT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SCREEN_HEIGHT(0, "SCREEN_HEIGHT", "getScreenHeight"),
+
+	/**
+	 * The '<em><b>TRIGGER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TRIGGER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TRIGGER(0, "TRIGGER", "getTrigger");
+
+	/**
+	 * The '<em><b>IP ADDRESS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IP ADDRESS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IP_ADDRESS
+	 * @model literal="getIPAddress"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IP_ADDRESS_VALUE = 0;
+
+	/**
+	 * The '<em><b>NOW</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NOW</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NOW
+	 * @model literal="getNow"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NOW_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER AGENT INFO</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER AGENT INFO</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_AGENT_INFO
+	 * @model literal="getUserAgentInfo"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_AGENT_INFO_VALUE = 0;
+
+	/**
+	 * The '<em><b>IS TOUCH DEVICE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IS TOUCH DEVICE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IS_TOUCH_DEVICE
+	 * @model literal="isTouchDevice"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IS_TOUCH_DEVICE_VALUE = 0;
+
+	/**
+	 * The '<em><b>IS HTTPS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IS HTTPS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IS_HTTPS
+	 * @model literal="isHttps"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IS_HTTPS_VALUE = 0;
+
+	/**
+	 * The '<em><b>BROWSER LOCALE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BROWSER LOCALE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BROWSER_LOCALE
+	 * @model literal="getBrowserLocale"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BROWSER_LOCALE_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER NAME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER NAME</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_NAME
+	 * @model literal="getUserName"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_NAME_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER PASSWORD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER PASSWORD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_PASSWORD
+	 * @model literal="getUserPassword"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_PASSWORD_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER EMAIL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER EMAIL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_EMAIL
+	 * @model literal="getUserEmail"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_EMAIL_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER POSITION</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER POSITION</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_POSITION
+	 * @model literal="getUserPosition"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_POSITION_VALUE = 0;
+
+	/**
+	 * The '<em><b>USER PRTSERVICE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>USER PRTSERVICE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #USER_PRTSERVICE
+	 * @model literal="getUserPrintService"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int USER_PRTSERVICE_VALUE = 0;
+
+	/**
+	 * The '<em><b>SCREEN WIDTH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SCREEN WIDTH</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SCREEN_WIDTH
+	 * @model literal="getSceenWidth"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SCREEN_WIDTH_VALUE = 0;
+
+	/**
+	 * The '<em><b>SCREEN HEIGHT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SCREEN HEIGHT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SCREEN_HEIGHT
+	 * @model literal="getScreenHeight"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SCREEN_HEIGHT_VALUE = 0;
+
+	/**
+	 * The '<em><b>TRIGGER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TRIGGER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TRIGGER
+	 * @model literal="getTrigger"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TRIGGER_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Evaluation Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineEvaluationType[] VALUES_ARRAY =
+		new StatemachineEvaluationType[] {
+			IP_ADDRESS,
+			NOW,
+			USER_AGENT_INFO,
+			IS_TOUCH_DEVICE,
+			IS_HTTPS,
+			BROWSER_LOCALE,
+			USER_NAME,
+			USER_PASSWORD,
+			USER_EMAIL,
+			USER_POSITION,
+			USER_PRTSERVICE,
+			SCREEN_WIDTH,
+			SCREEN_HEIGHT,
+			TRIGGER,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Evaluation Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineEvaluationType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Evaluation Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineEvaluationType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineEvaluationType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Evaluation Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineEvaluationType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineEvaluationType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Evaluation Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineEvaluationType get(int value) {
+		switch (value) {
+			case IP_ADDRESS_VALUE: return IP_ADDRESS;
+		}
+		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 StatemachineEvaluationType(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;
+	}
+	
+} //StatemachineEvaluationType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvent.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvent.java
new file mode 100644
index 0000000..41e4e9a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineEvent.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineEvent()
+ * @model
+ * @generated
+ */
+public interface StatemachineEvent extends StatemachineBase {
+} // StatemachineEvent
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFieldType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFieldType.java
new file mode 100644
index 0000000..6f4702e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFieldType.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Field Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineFieldType#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFieldType()
+ * @model
+ * @generated
+ */
+public interface StatemachineFieldType extends StatemachineLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Attribute Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineInternalType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute 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>Attribute Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+	 * @see #setAttributeType(StatemachineInternalType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFieldType_AttributeType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineInternalType getAttributeType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFieldType#getAttributeType <em>Attribute Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+	 * @see #getAttributeType()
+	 * @generated
+	 */
+	void setAttributeType(StatemachineInternalType value);
+
+} // StatemachineFieldType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFunction.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFunction.java
new file mode 100644
index 0000000..e2d9b4c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineFunction.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFunction()
+ * @model
+ * @generated
+ */
+public interface StatemachineFunction extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Function</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Function</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Function</em>' reference.
+	 * @see #setFunction(FunctionLibraryFunction)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFunction_Function()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryFunction getFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFunction <em>Function</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Function</em>' reference.
+	 * @see #getFunction()
+	 * @generated
+	 */
+	void setFunction(FunctionLibraryFunction value);
+
+	/**
+	 * Returns the value of the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>First</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>First</em>' containment reference.
+	 * @see #setFirst(StatemachineOperationParameter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFunction_First()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineOperationParameter getFirst();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction#getFirst <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>First</em>' containment reference.
+	 * @see #getFirst()
+	 * @generated
+	 */
+	void setFirst(StatemachineOperationParameter value);
+
+	/**
+	 * Returns the value of the '<em><b>More</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>More</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>More</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineFunction_More()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineOperationParameter> getMore();
+
+} // StatemachineFunction
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineGuard.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineGuard.java
new file mode 100644
index 0000000..24856ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineGuard.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Guard</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getGuard <em>Guard</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#isHasOnFail <em>Has On Fail</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailDescription <em>On Fail Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailCaption <em>On Fail Caption</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailType <em>On Fail Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard()
+ * @model
+ * @generated
+ */
+public interface StatemachineGuard extends StatemachineLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Guard</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Guard</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Guard</em>' reference.
+	 * @see #setGuard(FunctionLibraryGuard)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard_Guard()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryGuard getGuard();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getGuard <em>Guard</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Guard</em>' reference.
+	 * @see #getGuard()
+	 * @generated
+	 */
+	void setGuard(FunctionLibraryGuard value);
+
+	/**
+	 * Returns the value of the '<em><b>Has On Fail</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has On Fail</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 On Fail</em>' attribute.
+	 * @see #setHasOnFail(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard_HasOnFail()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasOnFail();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#isHasOnFail <em>Has On Fail</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has On Fail</em>' attribute.
+	 * @see #isHasOnFail()
+	 * @generated
+	 */
+	void setHasOnFail(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>On Fail Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Fail 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>On Fail Description</em>' attribute.
+	 * @see #setOnFailDescription(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard_OnFailDescription()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getOnFailDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailDescription <em>On Fail Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Fail Description</em>' attribute.
+	 * @see #getOnFailDescription()
+	 * @generated
+	 */
+	void setOnFailDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>On Fail Caption</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Fail Caption</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>On Fail Caption</em>' attribute.
+	 * @see #setOnFailCaption(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard_OnFailCaption()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getOnFailCaption();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailCaption <em>On Fail Caption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Fail Caption</em>' attribute.
+	 * @see #getOnFailCaption()
+	 * @generated
+	 */
+	void setOnFailCaption(String value);
+
+	/**
+	 * Returns the value of the '<em><b>On Fail Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Fail 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>On Fail Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType
+	 * @see #setOnFailType(StatemachineUserMessageType)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineGuard_OnFailType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	StatemachineUserMessageType getOnFailType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard#getOnFailType <em>On Fail Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Fail Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType
+	 * @see #getOnFailType()
+	 * @generated
+	 */
+	void setOnFailType(StatemachineUserMessageType value);
+
+} // StatemachineGuard
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineInternalType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineInternalType.java
new file mode 100644
index 0000000..3fb3975
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineInternalType.java
@@ -0,0 +1,348 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Internal Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineInternalType()
+ * @model
+ * @generated
+ */
+public enum StatemachineInternalType implements Enumerator {
+	/**
+	 * The '<em><b>BOOLEAN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOLEAN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOOLEAN(0, "BOOLEAN", "Boolean"),
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INTEGER(0, "INTEGER", "Integer"),
+
+	/**
+	 * The '<em><b>LONG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LONG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LONG(0, "LONG", "Long"),
+
+	/**
+	 * The '<em><b>DOUBLE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DOUBLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DOUBLE(0, "DOUBLE", "Double"),
+
+	/**
+	 * The '<em><b>STRING</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STRING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STRING(0, "STRING", "String"),
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DATE(0, "DATE", "Date"),
+
+	/**
+	 * The '<em><b>SUGGESTTEXT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUGGESTTEXT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUGGESTTEXT(0, "SUGGESTTEXT", "SuggestText");
+
+	/**
+	 * The '<em><b>BOOLEAN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BOOLEAN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOOLEAN
+	 * @model literal="Boolean"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOOLEAN_VALUE = 0;
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INTEGER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER
+	 * @model literal="Integer"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INTEGER_VALUE = 0;
+
+	/**
+	 * The '<em><b>LONG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LONG</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LONG
+	 * @model literal="Long"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LONG_VALUE = 0;
+
+	/**
+	 * The '<em><b>DOUBLE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DOUBLE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DOUBLE
+	 * @model literal="Double"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DOUBLE_VALUE = 0;
+
+	/**
+	 * The '<em><b>STRING</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>STRING</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STRING
+	 * @model literal="String"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STRING_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>SUGGESTTEXT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SUGGESTTEXT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUGGESTTEXT
+	 * @model literal="SuggestText"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUGGESTTEXT_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Internal Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineInternalType[] VALUES_ARRAY =
+		new StatemachineInternalType[] {
+			BOOLEAN,
+			INTEGER,
+			LONG,
+			DOUBLE,
+			STRING,
+			DATE,
+			SUGGESTTEXT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Internal Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineInternalType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Internal Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineInternalType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineInternalType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Internal Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineInternalType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineInternalType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Internal Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineInternalType get(int value) {
+		switch (value) {
+			case BOOLEAN_VALUE: return BOOLEAN;
+		}
+		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 StatemachineInternalType(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;
+	}
+	
+} //StatemachineInternalType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLazyResolver.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLazyResolver.java
new file mode 100644
index 0000000..c563667
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLazyResolver.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLazyResolver()
+ * @model
+ * @generated
+ */
+public interface StatemachineLazyResolver extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.statemachine.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);
+
+} // StatemachineLazyResolver
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayCursorType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayCursorType.java
new file mode 100644
index 0000000..e897b23
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayCursorType.java
@@ -0,0 +1,374 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Line Display Cursor Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLineDisplayCursorType()
+ * @model
+ * @generated
+ */
+public enum StatemachineLineDisplayCursorType implements Enumerator {
+	/**
+	 * The '<em><b>DISP CT NONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_NONE(0, "DISP_CT_NONE", "none"),
+
+	/**
+	 * The '<em><b>DISP CT FIXED</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_FIXED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_FIXED(0, "DISP_CT_FIXED", "fixed"),
+
+	/**
+	 * The '<em><b>DISP CT BLOCK</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_BLOCK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_BLOCK(0, "DISP_CT_BLOCK", "block"),
+
+	/**
+	 * The '<em><b>DISP CT HALFBLOCK</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_HALFBLOCK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_HALFBLOCK(0, "DISP_CT_HALFBLOCK", "halfblock"),
+
+	/**
+	 * The '<em><b>DISP CT UNDERLINE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_UNDERLINE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_UNDERLINE(0, "DISP_CT_UNDERLINE", "underline"),
+
+	/**
+	 * The '<em><b>DISP CT REVERSE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_REVERSE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_REVERSE(0, "DISP_CT_REVERSE", "reverse"),
+
+	/**
+	 * The '<em><b>DISP CT OTHER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_OTHER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_OTHER(0, "DISP_CT_OTHER", "other"),
+
+	/**
+	 * The '<em><b>DISP CT BLINK</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_BLINK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_CT_BLINK(0, "DISP_CT_BLINK", "blink");
+
+	/**
+	 * The '<em><b>DISP CT NONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT NONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_NONE
+	 * @model literal="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_NONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT FIXED</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT FIXED</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_FIXED
+	 * @model literal="fixed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_FIXED_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT BLOCK</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT BLOCK</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_BLOCK
+	 * @model literal="block"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_BLOCK_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT HALFBLOCK</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT HALFBLOCK</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_HALFBLOCK
+	 * @model literal="halfblock"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_HALFBLOCK_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT UNDERLINE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT UNDERLINE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_UNDERLINE
+	 * @model literal="underline"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_UNDERLINE_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT REVERSE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT REVERSE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_REVERSE
+	 * @model literal="reverse"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_REVERSE_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT OTHER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT OTHER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_OTHER
+	 * @model literal="other"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_OTHER_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP CT BLINK</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP CT BLINK</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_CT_BLINK
+	 * @model literal="blink"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_CT_BLINK_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Line Display Cursor Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineLineDisplayCursorType[] VALUES_ARRAY =
+		new StatemachineLineDisplayCursorType[] {
+			DISP_CT_NONE,
+			DISP_CT_FIXED,
+			DISP_CT_BLOCK,
+			DISP_CT_HALFBLOCK,
+			DISP_CT_UNDERLINE,
+			DISP_CT_REVERSE,
+			DISP_CT_OTHER,
+			DISP_CT_BLINK,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Line Display Cursor Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineLineDisplayCursorType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Cursor Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayCursorType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayCursorType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Cursor Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayCursorType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayCursorType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Cursor Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayCursorType get(int value) {
+		switch (value) {
+			case DISP_CT_NONE_VALUE: return DISP_CT_NONE;
+		}
+		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 StatemachineLineDisplayCursorType(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;
+	}
+	
+} //StatemachineLineDisplayCursorType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeFormat.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeFormat.java
new file mode 100644
index 0000000..fe5dada
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeFormat.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Line Display Marquee Format</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLineDisplayMarqueeFormat()
+ * @model
+ * @generated
+ */
+public enum StatemachineLineDisplayMarqueeFormat implements Enumerator {
+	/**
+	 * The '<em><b>DISP MF WALK</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MF_WALK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MF_WALK(0, "DISP_MF_WALK", "walk"),
+
+	/**
+	 * The '<em><b>DISP MF PLACE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MF_PLACE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MF_PLACE(0, "DISP_MF_PLACE", "place");
+
+	/**
+	 * The '<em><b>DISP MF WALK</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MF WALK</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MF_WALK
+	 * @model literal="walk"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MF_WALK_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MF PLACE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MF PLACE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MF_PLACE
+	 * @model literal="place"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MF_PLACE_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Line Display Marquee Format</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineLineDisplayMarqueeFormat[] VALUES_ARRAY =
+		new StatemachineLineDisplayMarqueeFormat[] {
+			DISP_MF_WALK,
+			DISP_MF_PLACE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Line Display Marquee Format</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineLineDisplayMarqueeFormat> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Format</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeFormat get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayMarqueeFormat result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Format</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeFormat getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayMarqueeFormat result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Format</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeFormat get(int value) {
+		switch (value) {
+			case DISP_MF_WALK_VALUE: return DISP_MF_WALK;
+		}
+		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 StatemachineLineDisplayMarqueeFormat(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;
+	}
+	
+} //StatemachineLineDisplayMarqueeFormat
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeType.java
new file mode 100644
index 0000000..0126091
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayMarqueeType.java
@@ -0,0 +1,322 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Line Display Marquee Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLineDisplayMarqueeType()
+ * @model
+ * @generated
+ */
+public enum StatemachineLineDisplayMarqueeType implements Enumerator {
+	/**
+	 * The '<em><b>DISP MT NONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_NONE(0, "DISP_MT_NONE", "none"),
+
+	/**
+	 * The '<em><b>DISP MT UP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_UP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_UP(0, "DISP_MT_UP", "up"),
+
+	/**
+	 * The '<em><b>DISP MT DOWN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_DOWN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_DOWN(0, "DISP_MT_DOWN", "down"),
+
+	/**
+	 * The '<em><b>DISP MT LEFT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_LEFT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_LEFT(0, "DISP_MT_LEFT", "left"),
+
+	/**
+	 * The '<em><b>DISP MT RIGHT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_RIGHT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_RIGHT(0, "DISP_MT_RIGHT", "right"),
+
+	/**
+	 * The '<em><b>DISP MT INIT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_INIT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_MT_INIT(0, "DISP_MT_INIT", "init");
+
+	/**
+	 * The '<em><b>DISP MT NONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT NONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_NONE
+	 * @model literal="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_NONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MT UP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT UP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_UP
+	 * @model literal="up"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_UP_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MT DOWN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT DOWN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_DOWN
+	 * @model literal="down"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_DOWN_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MT LEFT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT LEFT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_LEFT
+	 * @model literal="left"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_LEFT_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MT RIGHT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT RIGHT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_RIGHT
+	 * @model literal="right"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_RIGHT_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP MT INIT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP MT INIT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_MT_INIT
+	 * @model literal="init"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_MT_INIT_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Line Display Marquee Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineLineDisplayMarqueeType[] VALUES_ARRAY =
+		new StatemachineLineDisplayMarqueeType[] {
+			DISP_MT_NONE,
+			DISP_MT_UP,
+			DISP_MT_DOWN,
+			DISP_MT_LEFT,
+			DISP_MT_RIGHT,
+			DISP_MT_INIT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Line Display Marquee Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineLineDisplayMarqueeType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayMarqueeType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayMarqueeType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Marquee Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayMarqueeType get(int value) {
+		switch (value) {
+			case DISP_MT_NONE_VALUE: return DISP_MT_NONE;
+		}
+		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 StatemachineLineDisplayMarqueeType(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;
+	}
+	
+} //StatemachineLineDisplayMarqueeType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayScrollTextType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayScrollTextType.java
new file mode 100644
index 0000000..cbee2e1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayScrollTextType.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Line Display Scroll Text Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLineDisplayScrollTextType()
+ * @model
+ * @generated
+ */
+public enum StatemachineLineDisplayScrollTextType implements Enumerator {
+	/**
+	 * The '<em><b>DISP ST UP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_UP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_ST_UP(0, "DISP_ST_UP", "up"),
+
+	/**
+	 * The '<em><b>DISP ST DOWN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_DOWN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_ST_DOWN(0, "DISP_ST_DOWN", "down"),
+
+	/**
+	 * The '<em><b>DISP ST LEFT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_LEFT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_ST_LEFT(0, "DISP_ST_LEFT", "left"),
+
+	/**
+	 * The '<em><b>DISP ST RIGHT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_RIGHT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_ST_RIGHT(0, "DISP_ST_RIGHT", "right");
+
+	/**
+	 * The '<em><b>DISP ST UP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP ST UP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_UP
+	 * @model literal="up"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_ST_UP_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP ST DOWN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP ST DOWN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_DOWN
+	 * @model literal="down"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_ST_DOWN_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP ST LEFT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP ST LEFT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_LEFT
+	 * @model literal="left"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_ST_LEFT_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP ST RIGHT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP ST RIGHT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_ST_RIGHT
+	 * @model literal="right"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_ST_RIGHT_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Line Display Scroll Text Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineLineDisplayScrollTextType[] VALUES_ARRAY =
+		new StatemachineLineDisplayScrollTextType[] {
+			DISP_ST_UP,
+			DISP_ST_DOWN,
+			DISP_ST_LEFT,
+			DISP_ST_RIGHT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Line Display Scroll Text Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineLineDisplayScrollTextType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Scroll Text Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayScrollTextType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayScrollTextType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Scroll Text Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayScrollTextType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayScrollTextType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Scroll Text Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayScrollTextType get(int value) {
+		switch (value) {
+			case DISP_ST_UP_VALUE: return DISP_ST_UP;
+		}
+		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 StatemachineLineDisplayScrollTextType(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;
+	}
+	
+} //StatemachineLineDisplayScrollTextType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayTextType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayTextType.java
new file mode 100644
index 0000000..5dea407
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineLineDisplayTextType.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Line Display Text Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineLineDisplayTextType()
+ * @model
+ * @generated
+ */
+public enum StatemachineLineDisplayTextType implements Enumerator {
+	/**
+	 * The '<em><b>DISP DT NORMAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_NORMAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_DT_NORMAL(0, "DISP_DT_NORMAL", "normal"),
+
+	/**
+	 * The '<em><b>DISP DT BLINK</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_BLINK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_DT_BLINK(0, "DISP_DT_BLINK", "blink"),
+
+	/**
+	 * The '<em><b>DISP DT REVERSE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_REVERSE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_DT_REVERSE(0, "DISP_DT_REVERSE", "reverse"),
+
+	/**
+	 * The '<em><b>DISP DT BLINK REVERSE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_BLINK_REVERSE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DISP_DT_BLINK_REVERSE(0, "DISP_DT_BLINK_REVERSE", "blinkreverse");
+
+	/**
+	 * The '<em><b>DISP DT NORMAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP DT NORMAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_NORMAL
+	 * @model literal="normal"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_DT_NORMAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP DT BLINK</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP DT BLINK</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_BLINK
+	 * @model literal="blink"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_DT_BLINK_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP DT REVERSE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP DT REVERSE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_REVERSE
+	 * @model literal="reverse"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_DT_REVERSE_VALUE = 0;
+
+	/**
+	 * The '<em><b>DISP DT BLINK REVERSE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DISP DT BLINK REVERSE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DISP_DT_BLINK_REVERSE
+	 * @model literal="blinkreverse"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DISP_DT_BLINK_REVERSE_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine Line Display Text Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineLineDisplayTextType[] VALUES_ARRAY =
+		new StatemachineLineDisplayTextType[] {
+			DISP_DT_NORMAL,
+			DISP_DT_BLINK,
+			DISP_DT_REVERSE,
+			DISP_DT_BLINK_REVERSE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine Line Display Text Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineLineDisplayTextType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Text Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayTextType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayTextType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Text Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayTextType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineLineDisplayTextType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine Line Display Text Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineLineDisplayTextType get(int value) {
+		switch (value) {
+			case DISP_DT_NORMAL_VALUE: return DISP_DT_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 StatemachineLineDisplayTextType(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;
+	}
+	
+} //StatemachineLineDisplayTextType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineModel.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineModel.java
new file mode 100644
index 0000000..3e51f81
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineModel.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineModel()
+ * @model
+ * @generated
+ */
+public interface StatemachineModel 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.statemachine.StatemachinePackage}.
+	 * <!-- 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.statemachine.StatemachineDSLPackage#getStatemachineModel_Packages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachinePackage> getPackages();
+
+} // StatemachineModel
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperation.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperation.java
new file mode 100644
index 0000000..733875f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperation.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getOperation <em>Operation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperation()
+ * @model
+ * @generated
+ */
+public interface StatemachineOperation extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operation</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Operation</em>' reference.
+	 * @see #setOperation(FunctionLibraryOperation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperation_Operation()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryOperation getOperation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getOperation <em>Operation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operation</em>' reference.
+	 * @see #getOperation()
+	 * @generated
+	 */
+	void setOperation(FunctionLibraryOperation value);
+
+	/**
+	 * Returns the value of the '<em><b>First</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>First</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>First</em>' containment reference.
+	 * @see #setFirst(StatemachineOperationParameter)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperation_First()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineOperationParameter getFirst();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation#getFirst <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>First</em>' containment reference.
+	 * @see #getFirst()
+	 * @generated
+	 */
+	void setFirst(StatemachineOperationParameter value);
+
+	/**
+	 * Returns the value of the '<em><b>More</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>More</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>More</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperation_More()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineOperationParameter> getMore();
+
+} // StatemachineOperation
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperationParameter.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperationParameter.java
new file mode 100644
index 0000000..159dba7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineOperationParameter.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Operation Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperationParameter()
+ * @model
+ * @generated
+ */
+public interface StatemachineOperationParameter extends StatemachineAction {
+	/**
+	 * 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(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineOperationParameter_Source()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter#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(StatemachineActionFieldConcatenation value);
+
+} // StatemachineOperationParameter
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePOSPrinterBarcodeType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePOSPrinterBarcodeType.java
new file mode 100644
index 0000000..5699340
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePOSPrinterBarcodeType.java
@@ -0,0 +1,1102 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine POS Printer Barcode Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePOSPrinterBarcodeType()
+ * @model
+ * @generated
+ */
+public enum StatemachinePOSPrinterBarcodeType implements Enumerator {
+	/**
+	 * The '<em><b>PTR BCS UPCA</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCA(0, "PTR_BCS_UPCA", "upca"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCE(0, "PTR_BCS_UPCE", "upcb"),
+
+	/**
+	 * The '<em><b>PTR BCS JAN8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_JAN8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_JAN8(0, "PTR_BCS_JAN8", "jan8"),
+
+	/**
+	 * The '<em><b>PTR BCS EAN8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_EAN8(0, "PTR_BCS_EAN8", "ean8"),
+
+	/**
+	 * The '<em><b>PTR BCS JAN13</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_JAN13_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_JAN13(0, "PTR_BCS_JAN13", "jan13"),
+
+	/**
+	 * The '<em><b>PTR BCS EAN13</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN13_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_EAN13(0, "PTR_BCS_EAN13", "ean13"),
+
+	/**
+	 * The '<em><b>PTR BCS TF</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_TF_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_TF(0, "PTR_BCS_TF", "tf"),
+
+	/**
+	 * The '<em><b>PTR BCS ITF</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_ITF_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_ITF(0, "PTR_BCS_ITF", "itf"),
+
+	/**
+	 * The '<em><b>PTR BCS Codabar</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODABAR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_CODABAR(0, "PTR_BCS_Codabar", "codeabar"),
+
+	/**
+	 * The '<em><b>PTR BCS Code39</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE39_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_CODE39(0, "PTR_BCS_Code39", "code39"),
+
+	/**
+	 * The '<em><b>PTR BCS Code93</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE93_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_CODE93(0, "PTR_BCS_Code93", "code93"),
+
+	/**
+	 * The '<em><b>PTR BCS Code128</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE128_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_CODE128(0, "PTR_BCS_Code128", "code128"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCA S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCA_S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCA_S(0, "PTR_BCS_UPCA_S", "upca_s"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCE S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCE_S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCE_S(0, "PTR_BCS_UPCE_S", "upce_s"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCD1</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD1_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCD1(0, "PTR_BCS_UPCD1", "upcd1"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCD2</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD2_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCD2(0, "PTR_BCS_UPCD2", "upcd2"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCD3</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD3_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCD3(0, "PTR_BCS_UPCD3", "upcd3"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCD4</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD4_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCD4(0, "PTR_BCS_UPCD4", "upcd4"),
+
+	/**
+	 * The '<em><b>PTR BCS UPCD5</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD5_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPCD5(0, "PTR_BCS_UPCD5", "upcd5"),
+
+	/**
+	 * The '<em><b>PTR BCS EAN8 S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN8_S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_EAN8_S(0, "PTR_BCS_EAN8_S", "ean8_s"),
+
+	/**
+	 * The '<em><b>PTR BCS EAN13 S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN13_S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_EAN13_S(0, "PTR_BCS_EAN13_S", "ean13_s"),
+
+	/**
+	 * The '<em><b>PTR BCS EAN128</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN128_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_EAN128(0, "PTR_BCS_EAN128", "ean128"),
+
+	/**
+	 * The '<em><b>PTR BCS OCRA</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_OCRA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_OCRA(0, "PTR_BCS_OCRA", "orca"),
+
+	/**
+	 * The '<em><b>PTR BCS OCRB</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_OCRB_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_OCRB(0, "PTR_BCS_OCRB", "ocrb"),
+
+	/**
+	 * The '<em><b>PTR BCS Code128 Parsed</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE128_PARSED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_CODE128_PARSED(0, "PTR_BCS_Code128_Parsed", "code128_parsed"),
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_GS1DATABAR(0, "PTR_BCS_GS1DATABAR", "gs1databar"),
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR E</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_E_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_GS1DATABAR_E(0, "PTR_BCS_GS1DATABAR_E", "gs1databar_e"),
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR S</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_GS1DATABAR_S(0, "PTR_BCS_GS1DATABAR_S", "gs1databar_s"),
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR ES</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_ES_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_GS1DATABAR_ES(0, "PTR_BCS_GS1DATABAR_E_S", "gs1databar_e_s"),
+
+	/**
+	 * The '<em><b>PTR BCS PDF417</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_PDF417_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_PDF417(0, "PTR_BCS_PDF417", "pdf417"),
+
+	/**
+	 * The '<em><b>PTR BCS MAXICODE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_MAXICODE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_MAXICODE(0, "PTR_BCS_MAXICODE", "maxicode"),
+
+	/**
+	 * The '<em><b>PTR BCS DATAMATRIX</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_DATAMATRIX_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_DATAMATRIX(0, "PTR_BCS_DATAMATRIX", "datamatrix"),
+
+	/**
+	 * The '<em><b>PTR BCS QRCODE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_QRCODE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_QRCODE(0, "PTR_BCS_QRCODE", "qrcode"),
+
+	/**
+	 * The '<em><b>PTR BCS UQRCODE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UQRCODE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UQRCODE(0, "PTR_BCS_UQRCODE", "uqrcode"),
+
+	/**
+	 * The '<em><b>PTR BCS AZTEC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_AZTEC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_AZTEC(0, "PTR_BCS_AZTEC", "aztec"),
+
+	/**
+	 * The '<em><b>PTR BCS UPDF417</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPDF417_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PTR_BCS_UPDF417(0, "PTR_BCS_UPDF417", "updf417");
+
+	/**
+	 * The '<em><b>PTR BCS UPCA</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCA</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCA
+	 * @model literal="upca"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCA_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCE
+	 * @model literal="upcb"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCE_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS JAN8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS JAN8</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_JAN8
+	 * @model literal="jan8"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_JAN8_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS EAN8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS EAN8</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN8
+	 * @model literal="ean8"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_EAN8_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS JAN13</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS JAN13</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_JAN13
+	 * @model literal="jan13"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_JAN13_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS EAN13</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS EAN13</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN13
+	 * @model literal="ean13"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_EAN13_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS TF</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS TF</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_TF
+	 * @model literal="tf"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_TF_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS ITF</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS ITF</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_ITF
+	 * @model literal="itf"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_ITF_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS Codabar</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS Codabar</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODABAR
+	 * @model name="PTR_BCS_Codabar" literal="codeabar"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_CODABAR_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS Code39</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS Code39</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE39
+	 * @model name="PTR_BCS_Code39" literal="code39"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_CODE39_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS Code93</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS Code93</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE93
+	 * @model name="PTR_BCS_Code93" literal="code93"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_CODE93_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS Code128</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS Code128</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE128
+	 * @model name="PTR_BCS_Code128" literal="code128"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_CODE128_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCA S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCA S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCA_S
+	 * @model literal="upca_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCA_S_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCE S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCE S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCE_S
+	 * @model literal="upce_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCE_S_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCD1</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCD1</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD1
+	 * @model literal="upcd1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCD1_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCD2</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCD2</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD2
+	 * @model literal="upcd2"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCD2_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCD3</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCD3</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD3
+	 * @model literal="upcd3"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCD3_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCD4</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCD4</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD4
+	 * @model literal="upcd4"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCD4_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPCD5</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPCD5</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPCD5
+	 * @model literal="upcd5"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPCD5_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS EAN8 S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS EAN8 S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN8_S
+	 * @model literal="ean8_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_EAN8_S_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS EAN13 S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS EAN13 S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN13_S
+	 * @model literal="ean13_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_EAN13_S_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS EAN128</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS EAN128</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_EAN128
+	 * @model literal="ean128"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_EAN128_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS OCRA</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS OCRA</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_OCRA
+	 * @model literal="orca"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_OCRA_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS OCRB</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS OCRB</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_OCRB
+	 * @model literal="ocrb"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_OCRB_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS Code128 Parsed</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS Code128 Parsed</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_CODE128_PARSED
+	 * @model name="PTR_BCS_Code128_Parsed" literal="code128_parsed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_CODE128_PARSED_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS GS1DATABAR</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR
+	 * @model literal="gs1databar"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_GS1DATABAR_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR E</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS GS1DATABAR E</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_E
+	 * @model literal="gs1databar_e"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_GS1DATABAR_E_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR S</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS GS1DATABAR S</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_S
+	 * @model literal="gs1databar_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_GS1DATABAR_S_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS GS1DATABAR ES</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS GS1DATABAR ES</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_GS1DATABAR_ES
+	 * @model name="PTR_BCS_GS1DATABAR_E_S" literal="gs1databar_e_s"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_GS1DATABAR_ES_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS PDF417</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS PDF417</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_PDF417
+	 * @model literal="pdf417"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_PDF417_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS MAXICODE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS MAXICODE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_MAXICODE
+	 * @model literal="maxicode"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_MAXICODE_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS DATAMATRIX</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS DATAMATRIX</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_DATAMATRIX
+	 * @model literal="datamatrix"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_DATAMATRIX_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS QRCODE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS QRCODE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_QRCODE
+	 * @model literal="qrcode"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_QRCODE_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UQRCODE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UQRCODE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UQRCODE
+	 * @model literal="uqrcode"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UQRCODE_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS AZTEC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS AZTEC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_AZTEC
+	 * @model literal="aztec"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_AZTEC_VALUE = 0;
+
+	/**
+	 * The '<em><b>PTR BCS UPDF417</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PTR BCS UPDF417</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PTR_BCS_UPDF417
+	 * @model literal="updf417"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PTR_BCS_UPDF417_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine POS Printer Barcode Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachinePOSPrinterBarcodeType[] VALUES_ARRAY =
+		new StatemachinePOSPrinterBarcodeType[] {
+			PTR_BCS_UPCA,
+			PTR_BCS_UPCE,
+			PTR_BCS_JAN8,
+			PTR_BCS_EAN8,
+			PTR_BCS_JAN13,
+			PTR_BCS_EAN13,
+			PTR_BCS_TF,
+			PTR_BCS_ITF,
+			PTR_BCS_CODABAR,
+			PTR_BCS_CODE39,
+			PTR_BCS_CODE93,
+			PTR_BCS_CODE128,
+			PTR_BCS_UPCA_S,
+			PTR_BCS_UPCE_S,
+			PTR_BCS_UPCD1,
+			PTR_BCS_UPCD2,
+			PTR_BCS_UPCD3,
+			PTR_BCS_UPCD4,
+			PTR_BCS_UPCD5,
+			PTR_BCS_EAN8_S,
+			PTR_BCS_EAN13_S,
+			PTR_BCS_EAN128,
+			PTR_BCS_OCRA,
+			PTR_BCS_OCRB,
+			PTR_BCS_CODE128_PARSED,
+			PTR_BCS_GS1DATABAR,
+			PTR_BCS_GS1DATABAR_E,
+			PTR_BCS_GS1DATABAR_S,
+			PTR_BCS_GS1DATABAR_ES,
+			PTR_BCS_PDF417,
+			PTR_BCS_MAXICODE,
+			PTR_BCS_DATAMATRIX,
+			PTR_BCS_QRCODE,
+			PTR_BCS_UQRCODE,
+			PTR_BCS_AZTEC,
+			PTR_BCS_UPDF417,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine POS Printer Barcode Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachinePOSPrinterBarcodeType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine POS Printer Barcode Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachinePOSPrinterBarcodeType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachinePOSPrinterBarcodeType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine POS Printer Barcode Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachinePOSPrinterBarcodeType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachinePOSPrinterBarcodeType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine POS Printer Barcode Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachinePOSPrinterBarcodeType get(int value) {
+		switch (value) {
+			case PTR_BCS_UPCA_VALUE: return PTR_BCS_UPCA;
+		}
+		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 StatemachinePOSPrinterBarcodeType(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;
+	}
+	
+} //StatemachinePOSPrinterBarcodeType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePackage.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePackage.java
new file mode 100644
index 0000000..084ca71
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePackage.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachinePackage#getStatemachines <em>Statemachines</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePackage()
+ * @model
+ * @generated
+ */
+public interface StatemachinePackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Statemachines</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.Statemachine}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Statemachines</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>Statemachines</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePackage_Statemachines()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Statemachine> getStatemachines();
+
+} // StatemachinePackage
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevice.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevice.java
new file mode 100644
index 0000000..6a949e8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevice.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Peripheral Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePeripheralDevice()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface StatemachinePeripheralDevice extends StatemachineBase {
+} // StatemachinePeripheralDevice
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceCashDrawer.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceCashDrawer.java
new file mode 100644
index 0000000..a0421d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceCashDrawer.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Peripheral Device Cash Drawer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePeripheralDeviceCashDrawer()
+ * @model
+ * @generated
+ */
+public interface StatemachinePeripheralDeviceCashDrawer extends StatemachinePeripheralDevice {
+} // StatemachinePeripheralDeviceCashDrawer
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceLineDisplay.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceLineDisplay.java
new file mode 100644
index 0000000..a5992b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDeviceLineDisplay.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Peripheral Device Line Display</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePeripheralDeviceLineDisplay()
+ * @model
+ * @generated
+ */
+public interface StatemachinePeripheralDeviceLineDisplay extends StatemachinePeripheralDevice {
+} // StatemachinePeripheralDeviceLineDisplay
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePOSPrinter.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePOSPrinter.java
new file mode 100644
index 0000000..6a8f4f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePOSPrinter.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Peripheral Device POS Printer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePeripheralDevicePOSPrinter()
+ * @model
+ * @generated
+ */
+public interface StatemachinePeripheralDevicePOSPrinter extends StatemachinePeripheralDevice {
+} // StatemachinePeripheralDevicePOSPrinter
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePT.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePT.java
new file mode 100644
index 0000000..83354bd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachinePeripheralDevicePT.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Peripheral Device PT</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachinePeripheralDevicePT()
+ * @model
+ * @generated
+ */
+public interface StatemachinePeripheralDevicePT extends StatemachinePeripheralDevice {
+} // StatemachinePeripheralDevicePT
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineState.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineState.java
new file mode 100644
index 0000000..7fb8b12
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineState.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getTriggers <em>Triggers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getIdentity <em>Identity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeystroke <em>Keystroke</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#isHasKeyOperation <em>Has Key Operation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeyOperation <em>Key Operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState()
+ * @model
+ * @generated
+ */
+public interface StatemachineState extends StatemachineBase {
+	/**
+	 * Returns the value of the '<em><b>Triggers</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Triggers</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>Triggers</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState_Triggers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineTrigger> getTriggers();
+
+	/**
+	 * Returns the value of the '<em><b>Identity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Identity</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>Identity</em>' containment reference.
+	 * @see #setIdentity(StatemachineOperation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState_Identity()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineOperation getIdentity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getIdentity <em>Identity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Identity</em>' containment reference.
+	 * @see #getIdentity()
+	 * @generated
+	 */
+	void setIdentity(StatemachineOperation value);
+
+	/**
+	 * Returns the value of the '<em><b>Keystroke</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Keystroke</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Keystroke</em>' reference.
+	 * @see #setKeystroke(StatemachineControlFieldAttribute)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState_Keystroke()
+	 * @model
+	 * @generated
+	 */
+	StatemachineControlFieldAttribute getKeystroke();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeystroke <em>Keystroke</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Keystroke</em>' reference.
+	 * @see #getKeystroke()
+	 * @generated
+	 */
+	void setKeystroke(StatemachineControlFieldAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Key Operation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Key Operation</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 Key Operation</em>' attribute.
+	 * @see #setHasKeyOperation(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState_HasKeyOperation()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasKeyOperation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#isHasKeyOperation <em>Has Key Operation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Key Operation</em>' attribute.
+	 * @see #isHasKeyOperation()
+	 * @generated
+	 */
+	void setHasKeyOperation(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Key Operation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key Operation</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>Key Operation</em>' containment reference.
+	 * @see #setKeyOperation(StatemachineOperation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineState_KeyOperation()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineOperation getKeyOperation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState#getKeyOperation <em>Key Operation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key Operation</em>' containment reference.
+	 * @see #getKeyOperation()
+	 * @generated
+	 */
+	void setKeyOperation(StatemachineOperation value);
+
+} // StatemachineState
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorage.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorage.java
new file mode 100644
index 0000000..f595d26
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorage.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Storage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getContent <em>Content</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorage()
+ * @model
+ * @generated
+ */
+public interface StatemachineStorage extends StatemachineAction {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorage_Key()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' attribute.
+	 * @see #setAttribute(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorage_Attribute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getAttribute <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' attribute.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Content</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Content</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>Content</em>' containment reference.
+	 * @see #setContent(StatemachineActionFieldConcatenation)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorage_Content()
+	 * @model containment="true"
+	 * @generated
+	 */
+	StatemachineActionFieldConcatenation getContent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage#getContent <em>Content</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Content</em>' containment reference.
+	 * @see #getContent()
+	 * @generated
+	 */
+	void setContent(StatemachineActionFieldConcatenation value);
+
+} // StatemachineStorage
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorageRetrieve.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorageRetrieve.java
new file mode 100644
index 0000000..f273984
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineStorageRetrieve.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Storage Retrieve</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorageRetrieve()
+ * @model
+ * @generated
+ */
+public interface StatemachineStorageRetrieve extends StatemachineActionFieldSource {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorageRetrieve_Key()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' attribute.
+	 * @see #setAttribute(String)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineStorageRetrieve_Attribute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve#getAttribute <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' attribute.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(String value);
+
+} // StatemachineStorageRetrieve
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineTrigger.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineTrigger.java
new file mode 100644
index 0000000..71d0bd8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineTrigger.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Statemachine Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#isHasTransition <em>Has Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTransition <em>Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTriggers <em>Triggers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getGuards <em>Guards</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger()
+ * @model
+ * @generated
+ */
+public interface StatemachineTrigger extends StatemachineLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Has Transition</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Transition</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 Transition</em>' attribute.
+	 * @see #setHasTransition(boolean)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger_HasTransition()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasTransition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#isHasTransition <em>Has Transition</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Transition</em>' attribute.
+	 * @see #isHasTransition()
+	 * @generated
+	 */
+	void setHasTransition(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Transition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transition</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Transition</em>' reference.
+	 * @see #setTransition(StatemachineState)
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger_Transition()
+	 * @model
+	 * @generated
+	 */
+	StatemachineState getTransition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger#getTransition <em>Transition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transition</em>' reference.
+	 * @see #getTransition()
+	 * @generated
+	 */
+	void setTransition(StatemachineState value);
+
+	/**
+	 * Returns the value of the '<em><b>Triggers</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineEvent}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Triggers</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Triggers</em>' reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger_Triggers()
+	 * @model
+	 * @generated
+	 */
+	EList<StatemachineEvent> getTriggers();
+
+	/**
+	 * Returns the value of the '<em><b>Guards</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Guards</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Guards</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger_Guards()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineGuard> getGuards();
+
+	/**
+	 * Returns the value of the '<em><b>Actions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.statemachine.StatemachineAction}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Actions</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>Actions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineTrigger_Actions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StatemachineAction> getActions();
+
+} // StatemachineTrigger
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineUserMessageType.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineUserMessageType.java
new file mode 100644
index 0000000..c4a0ab2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/StatemachineUserMessageType.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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>Statemachine User Message Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage#getStatemachineUserMessageType()
+ * @model
+ * @generated
+ */
+public enum StatemachineUserMessageType implements Enumerator {
+	/**
+	 * The '<em><b>HUMANIZED MESSAGE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HUMANIZED_MESSAGE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HUMANIZED_MESSAGE(0, "HUMANIZED_MESSAGE", "humanized"),
+
+	/**
+	 * The '<em><b>WARNING MESSAGE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WARNING_MESSAGE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WARNING_MESSAGE(0, "WARNING_MESSAGE", "warning"),
+
+	/**
+	 * The '<em><b>ERROR MESSAGE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ERROR_MESSAGE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ERROR_MESSAGE(0, "ERROR_MESSAGE", "error"),
+
+	/**
+	 * The '<em><b>TRAY NOTIFICATION</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TRAY_NOTIFICATION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TRAY_NOTIFICATION(0, "TRAY_NOTIFICATION", "tray"),
+
+	/**
+	 * The '<em><b>ASSISTIVE NOTIFICATION</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASSISTIVE_NOTIFICATION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ASSISTIVE_NOTIFICATION(0, "ASSISTIVE_NOTIFICATION", "assistive");
+
+	/**
+	 * The '<em><b>HUMANIZED MESSAGE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>HUMANIZED MESSAGE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #HUMANIZED_MESSAGE
+	 * @model literal="humanized"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HUMANIZED_MESSAGE_VALUE = 0;
+
+	/**
+	 * The '<em><b>WARNING MESSAGE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WARNING MESSAGE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WARNING_MESSAGE
+	 * @model literal="warning"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WARNING_MESSAGE_VALUE = 0;
+
+	/**
+	 * The '<em><b>ERROR MESSAGE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ERROR MESSAGE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ERROR_MESSAGE
+	 * @model literal="error"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ERROR_MESSAGE_VALUE = 0;
+
+	/**
+	 * The '<em><b>TRAY NOTIFICATION</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TRAY NOTIFICATION</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TRAY_NOTIFICATION
+	 * @model literal="tray"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TRAY_NOTIFICATION_VALUE = 0;
+
+	/**
+	 * The '<em><b>ASSISTIVE NOTIFICATION</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ASSISTIVE NOTIFICATION</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ASSISTIVE_NOTIFICATION
+	 * @model literal="assistive"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ASSISTIVE_NOTIFICATION_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Statemachine User Message Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final StatemachineUserMessageType[] VALUES_ARRAY =
+		new StatemachineUserMessageType[] {
+			HUMANIZED_MESSAGE,
+			WARNING_MESSAGE,
+			ERROR_MESSAGE,
+			TRAY_NOTIFICATION,
+			ASSISTIVE_NOTIFICATION,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Statemachine User Message Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<StatemachineUserMessageType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Statemachine User Message Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineUserMessageType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineUserMessageType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine User Message Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineUserMessageType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			StatemachineUserMessageType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Statemachine User Message Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineUserMessageType get(int value) {
+		switch (value) {
+			case HUMANIZED_MESSAGE_VALUE: return HUMANIZED_MESSAGE;
+		}
+		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 StatemachineUserMessageType(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;
+	}
+	
+} //StatemachineUserMessageType
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonCaptionImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonCaptionImpl.java
new file mode 100644
index 0000000..18984c5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonCaptionImpl.java
@@ -0,0 +1,247 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionButtonCaption;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Button Caption</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonCaptionImpl#getCaption <em>Caption</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionButtonCaptionImpl extends StatemachineLazyResolverImpl implements StatemachineActionButtonCaption {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlButtonAttribute attribute;
+
+	/**
+	 * The cached value of the '{@link #getCaption() <em>Caption</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCaption()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation caption;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionButtonCaptionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlButtonAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlButtonAttribute newAttribute) {
+		StatemachineControlButtonAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getCaption() {
+		return caption;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCaption(StatemachineActionFieldConcatenation newCaption, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldCaption = caption;
+		caption = newCaption;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION, oldCaption, newCaption);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCaption(StatemachineActionFieldConcatenation newCaption) {
+		if (newCaption != caption) {
+			NotificationChain msgs = null;
+			if (caption != null)
+				msgs = ((InternalEObject)caption).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION, null, msgs);
+			if (newCaption != null)
+				msgs = ((InternalEObject)newCaption).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION, null, msgs);
+			msgs = basicSetCaption(newCaption, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION, newCaption, newCaption));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION:
+				return basicSetCaption(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 StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION:
+				return getCaption();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE:
+				setAttribute((StatemachineControlButtonAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION:
+				setCaption((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE:
+				setAttribute((StatemachineControlButtonAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION:
+				setCaption((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE:
+				return attribute != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION:
+				return caption != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionButtonCaptionImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonImageImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonImageImpl.java
new file mode 100644
index 0000000..b023cba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionButtonImageImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionButtonImage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Button Image</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionButtonImageImpl#getImage <em>Image</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionButtonImageImpl extends StatemachineLazyResolverImpl implements StatemachineActionButtonImage {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlButtonAttribute attribute;
+
+	/**
+	 * The default value of the '{@link #getImage() <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String IMAGE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getImage() <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected String image = IMAGE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionButtonImageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlButtonAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlButtonAttribute newAttribute) {
+		StatemachineControlButtonAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getImage() {
+		return image;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImage(String newImage) {
+		String oldImage = image;
+		image = newImage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE, oldImage, image));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE:
+				return getImage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE:
+				setAttribute((StatemachineControlButtonAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE:
+				setImage((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE:
+				setAttribute((StatemachineControlButtonAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE:
+				setImage(IMAGE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE:
+				return attribute != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE:
+				return IMAGE_EDEFAULT == null ? image != null : !IMAGE_EDEFAULT.equals(image);
+		}
+		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(" (image: ");
+		result.append(image);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionButtonImageImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionConditionalTransitionImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionConditionalTransitionImpl.java
new file mode 100644
index 0000000..c8be7ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionConditionalTransitionImpl.java
@@ -0,0 +1,292 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineAction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Conditional Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl#getTransition <em>Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl#getGuard <em>Guard</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionConditionalTransitionImpl#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionConditionalTransitionImpl extends StatemachineLazyResolverImpl implements StatemachineActionConditionalTransition {
+	/**
+	 * The cached value of the '{@link #getTransition() <em>Transition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTransition()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineState transition;
+
+	/**
+	 * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGuard()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineGuard guard;
+
+	/**
+	 * The cached value of the '{@link #getActions() <em>Actions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineAction> actions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionConditionalTransitionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState getTransition() {
+		if (transition != null && transition.eIsProxy()) {
+			InternalEObject oldTransition = (InternalEObject)transition;
+			transition = (StatemachineState)eResolveProxy(oldTransition);
+			if (transition != oldTransition) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION, oldTransition, transition));
+			}
+		}
+		return transition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState basicGetTransition() {
+		return transition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransition(StatemachineState newTransition) {
+		StatemachineState oldTransition = transition;
+		transition = newTransition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION, oldTransition, transition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineGuard getGuard() {
+		return guard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetGuard(StatemachineGuard newGuard, NotificationChain msgs) {
+		StatemachineGuard oldGuard = guard;
+		guard = newGuard;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD, oldGuard, newGuard);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGuard(StatemachineGuard newGuard) {
+		if (newGuard != guard) {
+			NotificationChain msgs = null;
+			if (guard != null)
+				msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD, null, msgs);
+			if (newGuard != null)
+				msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD, null, msgs);
+			msgs = basicSetGuard(newGuard, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD, newGuard, newGuard));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineAction> getActions() {
+		if (actions == null) {
+			actions = new EObjectContainmentEList<StatemachineAction>(StatemachineAction.class, this, StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS);
+		}
+		return actions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				return basicSetGuard(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS:
+				return ((InternalEList<?>)getActions()).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 StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION:
+				if (resolve) return getTransition();
+				return basicGetTransition();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				return getGuard();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS:
+				return getActions();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION:
+				setTransition((StatemachineState)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				setGuard((StatemachineGuard)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS:
+				getActions().clear();
+				getActions().addAll((Collection<? extends StatemachineAction>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION:
+				setTransition((StatemachineState)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				setGuard((StatemachineGuard)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS:
+				getActions().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION:
+				return transition != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				return guard != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS:
+				return actions != null && !actions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionConditionalTransitionImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionDTOFindImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionDTOFindImpl.java
new file mode 100644
index 0000000..b93a738
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionDTOFindImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action DTO Find</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionDTOFindImpl#getSearch <em>Search</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionDTOFindImpl extends StatemachineLazyResolverImpl implements StatemachineActionDTOFind {
+	/**
+	 * The cached value of the '{@link #getDto() <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDto()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlDTOAttribute dto;
+
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoInheritedAttribute attribute;
+
+	/**
+	 * The cached value of the '{@link #getSearch() <em>Search</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSearch()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation search;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionDTOFindImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTOAttribute getDto() {
+		if (dto != null && dto.eIsProxy()) {
+			InternalEObject oldDto = (InternalEObject)dto;
+			dto = (StatemachineControlDTOAttribute)eResolveProxy(oldDto);
+			if (dto != oldDto) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO, oldDto, dto));
+			}
+		}
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTOAttribute basicGetDto() {
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDto(StatemachineControlDTOAttribute newDto) {
+		StatemachineControlDTOAttribute oldDto = dto;
+		dto = newDto;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO, oldDto, dto));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (LDtoInheritedAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(LDtoInheritedAttribute newAttribute) {
+		LDtoInheritedAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getSearch() {
+		return search;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSearch(StatemachineActionFieldConcatenation newSearch, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldSearch = search;
+		search = newSearch;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH, oldSearch, newSearch);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSearch(StatemachineActionFieldConcatenation newSearch) {
+		if (newSearch != search) {
+			NotificationChain msgs = null;
+			if (search != null)
+				msgs = ((InternalEObject)search).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH, null, msgs);
+			if (newSearch != null)
+				msgs = ((InternalEObject)newSearch).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH, null, msgs);
+			msgs = basicSetSearch(newSearch, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH, newSearch, newSearch));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH:
+				return basicSetSearch(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 StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO:
+				if (resolve) return getDto();
+				return basicGetDto();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH:
+				return getSearch();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO:
+				setDto((StatemachineControlDTOAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE:
+				setAttribute((LDtoInheritedAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH:
+				setSearch((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO:
+				setDto((StatemachineControlDTOAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE:
+				setAttribute((LDtoInheritedAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH:
+				setSearch((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__DTO:
+				return dto != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE:
+				return attribute != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND__SEARCH:
+				return search != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionDTOFindImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldClearImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldClearImpl.java
new file mode 100644
index 0000000..565428f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldClearImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Clear</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldClearImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldClearImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldClear {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldClearImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CLEAR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlFieldAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlFieldAttribute newAttribute) {
+		StatemachineControlFieldAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldClearImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldConcatenationImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldConcatenationImpl.java
new file mode 100644
index 0000000..caea202
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldConcatenationImpl.java
@@ -0,0 +1,230 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Concatenation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldConcatenationImpl#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldConcatenationImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldConcatenation {
+	/**
+	 * The cached value of the '{@link #getFirst() <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFirst()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldSource first;
+
+	/**
+	 * The cached value of the '{@link #getMore() <em>More</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMore()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineActionFieldSource> more;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldConcatenationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CONCATENATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSource getFirst() {
+		return first;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFirst(StatemachineActionFieldSource newFirst, NotificationChain msgs) {
+		StatemachineActionFieldSource oldFirst = first;
+		first = newFirst;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST, oldFirst, newFirst);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFirst(StatemachineActionFieldSource newFirst) {
+		if (newFirst != first) {
+			NotificationChain msgs = null;
+			if (first != null)
+				msgs = ((InternalEObject)first).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST, null, msgs);
+			if (newFirst != null)
+				msgs = ((InternalEObject)newFirst).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST, null, msgs);
+			msgs = basicSetFirst(newFirst, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST, newFirst, newFirst));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineActionFieldSource> getMore() {
+		if (more == null) {
+			more = new EObjectContainmentEList<StatemachineActionFieldSource>(StatemachineActionFieldSource.class, this, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE);
+		}
+		return more;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST:
+				return basicSetFirst(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE:
+				return ((InternalEList<?>)getMore()).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 StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST:
+				return getFirst();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE:
+				return getMore();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST:
+				setFirst((StatemachineActionFieldSource)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE:
+				getMore().clear();
+				getMore().addAll((Collection<? extends StatemachineActionFieldSource>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST:
+				setFirst((StatemachineActionFieldSource)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE:
+				getMore().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST:
+				return first != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE:
+				return more != null && !more.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldConcatenationImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldGetImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldGetImpl.java
new file mode 100644
index 0000000..cb3dc5a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldGetImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldGet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Get</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldGetImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldGetImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldGet {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldGetImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlFieldAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlFieldAttribute newAttribute) {
+		StatemachineControlFieldAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldGetImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldKeystrokeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldKeystrokeImpl.java
new file mode 100644
index 0000000..95c9409
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldKeystrokeImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldKeystroke;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Keystroke</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldKeystrokeImpl#getKeystroke <em>Keystroke</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldKeystrokeImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldKeystroke {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute attribute;
+
+	/**
+	 * The default value of the '{@link #getKeystroke() <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeystroke()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEYSTROKE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKeystroke() <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeystroke()
+	 * @generated
+	 * @ordered
+	 */
+	protected String keystroke = KEYSTROKE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldKeystrokeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_KEYSTROKE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlFieldAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlFieldAttribute newAttribute) {
+		StatemachineControlFieldAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKeystroke() {
+		return keystroke;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeystroke(String newKeystroke) {
+		String oldKeystroke = keystroke;
+		keystroke = newKeystroke;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE, oldKeystroke, keystroke));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE:
+				return getKeystroke();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE:
+				setKeystroke((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE:
+				setKeystroke(KEYSTROKE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE:
+				return attribute != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE:
+				return KEYSTROKE_EDEFAULT == null ? keystroke != null : !KEYSTROKE_EDEFAULT.equals(keystroke);
+		}
+		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(" (keystroke: ");
+		result.append(keystroke);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionFieldKeystrokeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldRemoveImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldRemoveImpl.java
new file mode 100644
index 0000000..0f99749
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldRemoveImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldRemove;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Remove</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldRemoveImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldRemoveImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldRemove {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldRemoveImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_REMOVE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlFieldAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlFieldAttribute newAttribute) {
+		StatemachineControlFieldAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldRemoveImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSetImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSetImpl.java
new file mode 100644
index 0000000..660e542
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSetImpl.java
@@ -0,0 +1,247 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Set</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSetImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSetImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSet {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute attribute;
+
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation source;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSetImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlFieldAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlFieldAttribute newAttribute) {
+		StatemachineControlFieldAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSource(StatemachineActionFieldConcatenation newSource, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldSource = source;
+		source = newSource;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE, oldSource, newSource);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSource(StatemachineActionFieldConcatenation newSource) {
+		if (newSource != source) {
+			NotificationChain msgs = null;
+			if (source != null)
+				msgs = ((InternalEObject)source).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE, null, msgs);
+			if (newSource != null)
+				msgs = ((InternalEObject)newSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE, null, msgs);
+			msgs = basicSetSource(newSource, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE, newSource, newSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__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 StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__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 StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE:
+				setSource((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE:
+				setAttribute((StatemachineControlFieldAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE:
+				setSource((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE:
+				return attribute != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET__SOURCE:
+				return source != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldSetImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceDtoAttributeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceDtoAttributeImpl.java
new file mode 100644
index 0000000..7492f0d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceDtoAttributeImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source Dto Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceDtoAttributeImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceDtoAttributeImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceDtoAttribute {
+	/**
+	 * The cached value of the '{@link #getDto() <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDto()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlDTOAttribute dto;
+
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoInheritedAttribute attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceDtoAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTOAttribute getDto() {
+		if (dto != null && dto.eIsProxy()) {
+			InternalEObject oldDto = (InternalEObject)dto;
+			dto = (StatemachineControlDTOAttribute)eResolveProxy(oldDto);
+			if (dto != oldDto) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO, oldDto, dto));
+			}
+		}
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTOAttribute basicGetDto() {
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDto(StatemachineControlDTOAttribute newDto) {
+		StatemachineControlDTOAttribute oldDto = dto;
+		dto = newDto;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO, oldDto, dto));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (LDtoInheritedAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(LDtoInheritedAttribute newAttribute) {
+		LDtoInheritedAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO:
+				if (resolve) return getDto();
+				return basicGetDto();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO:
+				setDto((StatemachineControlDTOAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE:
+				setAttribute((LDtoInheritedAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO:
+				setDto((StatemachineControlDTOAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE:
+				setAttribute((LDtoInheritedAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO:
+				return dto != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionFieldSourceDtoAttributeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEvaluateImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEvaluateImpl.java
new file mode 100644
index 0000000..d864ea6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEvaluateImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldSourceEvaluate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source Evaluate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceEvaluateImpl#getEvaluationtype <em>Evaluationtype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceEvaluateImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceEvaluate {
+	/**
+	 * The default value of the '{@link #getEvaluationtype() <em>Evaluationtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvaluationtype()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineEvaluationType EVALUATIONTYPE_EDEFAULT = StatemachineEvaluationType.IP_ADDRESS;
+
+	/**
+	 * The cached value of the '{@link #getEvaluationtype() <em>Evaluationtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvaluationtype()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineEvaluationType evaluationtype = EVALUATIONTYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceEvaluateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvaluationType getEvaluationtype() {
+		return evaluationtype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvaluationtype(StatemachineEvaluationType newEvaluationtype) {
+		StatemachineEvaluationType oldEvaluationtype = evaluationtype;
+		evaluationtype = newEvaluationtype == null ? EVALUATIONTYPE_EDEFAULT : newEvaluationtype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE, oldEvaluationtype, evaluationtype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE:
+				return getEvaluationtype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE:
+				setEvaluationtype((StatemachineEvaluationType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE:
+				setEvaluationtype(EVALUATIONTYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE:
+				return evaluationtype != EVALUATIONTYPE_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(" (evaluationtype: ");
+		result.append(evaluationtype);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionFieldSourceEvaluateImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEventImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEventImpl.java
new file mode 100644
index 0000000..e5e5746
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceEventImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceEventImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceEvent {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVENT;
+	}
+
+} //StatemachineActionFieldSourceEventImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceNumberImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceNumberImpl.java
new file mode 100644
index 0000000..4ac2dc8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceNumberImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldSourceNumber;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source Number</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceNumberImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceNumberImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceNumber {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceNumberImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(Double newValue) {
+		Double oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE:
+				setValue((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionFieldSourceNumberImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceStringImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceStringImpl.java
new file mode 100644
index 0000000..90134c4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceStringImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldSourceString;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source String</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceStringImpl#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceStringImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceString {
+	/**
+	 * The default value of the '{@link #getText() <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TEXT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected String text = TEXT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceStringImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_STRING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(String newText) {
+		String oldText = text;
+		text = newText;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT, oldText, text));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT:
+				return getText();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT:
+				setText((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT:
+				setText(TEXT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT:
+				return TEXT_EDEFAULT == null ? text != null : !TEXT_EDEFAULT.equals(text);
+		}
+		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(" (text: ");
+		result.append(text);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionFieldSourceStringImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceTranslateImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceTranslateImpl.java
new file mode 100644
index 0000000..8d53b33
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionFieldSourceTranslateImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldSourceTranslate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Field Source Translate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionFieldSourceTranslateImpl#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionFieldSourceTranslateImpl extends StatemachineLazyResolverImpl implements StatemachineActionFieldSourceTranslate {
+	/**
+	 * The default value of the '{@link #getText() <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TEXT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected String text = TEXT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionFieldSourceTranslateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(String newText) {
+		String oldText = text;
+		text = newText;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT, oldText, text));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT:
+				return getText();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT:
+				setText((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT:
+				setText(TEXT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT:
+				return TEXT_EDEFAULT == null ? text != null : !TEXT_EDEFAULT.equals(text);
+		}
+		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(" (text: ");
+		result.append(text);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionFieldSourceTranslateImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemInvisibleImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemInvisibleImpl.java
new file mode 100644
index 0000000..ea935cf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemInvisibleImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionItemInvisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Item Invisible</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemInvisibleImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionItemInvisibleImpl extends StatemachineLazyResolverImpl implements StatemachineActionItemInvisible {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlVisibility attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionItemInvisibleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_INVISIBLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlVisibility getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlVisibility)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlVisibility basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlVisibility newAttribute) {
+		StatemachineControlVisibility oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE:
+				setAttribute((StatemachineControlVisibility)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE:
+				setAttribute((StatemachineControlVisibility)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionItemInvisibleImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemVisibleImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemVisibleImpl.java
new file mode 100644
index 0000000..8e56125
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionItemVisibleImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionItemVisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Item Visible</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionItemVisibleImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionItemVisibleImpl extends StatemachineLazyResolverImpl implements StatemachineActionItemVisible {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlVisibility attribute;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionItemVisibleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_VISIBLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlVisibility getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (StatemachineControlVisibility)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlVisibility basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(StatemachineControlVisibility newAttribute) {
+		StatemachineControlVisibility oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE:
+				setAttribute((StatemachineControlVisibility)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE:
+				setAttribute((StatemachineControlVisibility)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE:
+				return attribute != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionItemVisibleImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralBlinkRateImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralBlinkRateImpl.java
new file mode 100644
index 0000000..e4ec0b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralBlinkRateImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralBlinkRate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Blink Rate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralBlinkRateImpl#getBlinkRate <em>Blink Rate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralBlinkRateImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralBlinkRate {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getBlinkRate() <em>Blink Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBlinkRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BLINK_RATE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBlinkRate() <em>Blink Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBlinkRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected int blinkRate = BLINK_RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralBlinkRateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBlinkRate() {
+		return blinkRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBlinkRate(int newBlinkRate) {
+		int oldBlinkRate = blinkRate;
+		blinkRate = newBlinkRate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE, oldBlinkRate, blinkRate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE:
+				return getBlinkRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE:
+				setBlinkRate((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE:
+				setBlinkRate(BLINK_RATE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE:
+				return blinkRate != BLINK_RATE_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(" (blinkRate: ");
+		result.append(blinkRate);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralBlinkRateImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralClearImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralClearImpl.java
new file mode 100644
index 0000000..f3d614a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralClearImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Clear</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralClearImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralClearImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralClear {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralClearImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CLEAR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralClearImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCreateWindowImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCreateWindowImpl.java
new file mode 100644
index 0000000..1cb05b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCreateWindowImpl.java
@@ -0,0 +1,505 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralCreateWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Create Window</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getViewportRow <em>Viewport Row</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getViewportColumn <em>Viewport Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getViewportHeight <em>Viewport Height</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getViewportWidth <em>Viewport Width</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getWindowHeight <em>Window Height</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCreateWindowImpl#getWindowWidth <em>Window Width</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralCreateWindowImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralCreateWindow {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getViewportRow() <em>Viewport Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportRow()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VIEWPORT_ROW_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getViewportRow() <em>Viewport Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportRow()
+	 * @generated
+	 * @ordered
+	 */
+	protected int viewportRow = VIEWPORT_ROW_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getViewportColumn() <em>Viewport Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VIEWPORT_COLUMN_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getViewportColumn() <em>Viewport Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected int viewportColumn = VIEWPORT_COLUMN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getViewportHeight() <em>Viewport Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VIEWPORT_HEIGHT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getViewportHeight() <em>Viewport Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected int viewportHeight = VIEWPORT_HEIGHT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getViewportWidth() <em>Viewport Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VIEWPORT_WIDTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getViewportWidth() <em>Viewport Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getViewportWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int viewportWidth = VIEWPORT_WIDTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getWindowHeight() <em>Window Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWindowHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WINDOW_HEIGHT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWindowHeight() <em>Window Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWindowHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected int windowHeight = WINDOW_HEIGHT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getWindowWidth() <em>Window Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWindowWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WINDOW_WIDTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWindowWidth() <em>Window Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWindowWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int windowWidth = WINDOW_WIDTH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralCreateWindowImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getViewportRow() {
+		return viewportRow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setViewportRow(int newViewportRow) {
+		int oldViewportRow = viewportRow;
+		viewportRow = newViewportRow;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW, oldViewportRow, viewportRow));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getViewportColumn() {
+		return viewportColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setViewportColumn(int newViewportColumn) {
+		int oldViewportColumn = viewportColumn;
+		viewportColumn = newViewportColumn;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN, oldViewportColumn, viewportColumn));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getViewportHeight() {
+		return viewportHeight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setViewportHeight(int newViewportHeight) {
+		int oldViewportHeight = viewportHeight;
+		viewportHeight = newViewportHeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT, oldViewportHeight, viewportHeight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getViewportWidth() {
+		return viewportWidth;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setViewportWidth(int newViewportWidth) {
+		int oldViewportWidth = viewportWidth;
+		viewportWidth = newViewportWidth;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH, oldViewportWidth, viewportWidth));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWindowHeight() {
+		return windowHeight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWindowHeight(int newWindowHeight) {
+		int oldWindowHeight = windowHeight;
+		windowHeight = newWindowHeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT, oldWindowHeight, windowHeight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWindowWidth() {
+		return windowWidth;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWindowWidth(int newWindowWidth) {
+		int oldWindowWidth = windowWidth;
+		windowWidth = newWindowWidth;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH, oldWindowWidth, windowWidth));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW:
+				return getViewportRow();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN:
+				return getViewportColumn();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT:
+				return getViewportHeight();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH:
+				return getViewportWidth();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT:
+				return getWindowHeight();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH:
+				return getWindowWidth();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW:
+				setViewportRow((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN:
+				setViewportColumn((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT:
+				setViewportHeight((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH:
+				setViewportWidth((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT:
+				setWindowHeight((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH:
+				setWindowWidth((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW:
+				setViewportRow(VIEWPORT_ROW_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN:
+				setViewportColumn(VIEWPORT_COLUMN_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT:
+				setViewportHeight(VIEWPORT_HEIGHT_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH:
+				setViewportWidth(VIEWPORT_WIDTH_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT:
+				setWindowHeight(WINDOW_HEIGHT_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH:
+				setWindowWidth(WINDOW_WIDTH_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW:
+				return viewportRow != VIEWPORT_ROW_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN:
+				return viewportColumn != VIEWPORT_COLUMN_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT:
+				return viewportHeight != VIEWPORT_HEIGHT_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH:
+				return viewportWidth != VIEWPORT_WIDTH_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT:
+				return windowHeight != WINDOW_HEIGHT_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH:
+				return windowWidth != WINDOW_WIDTH_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(" (viewportRow: ");
+		result.append(viewportRow);
+		result.append(", viewportColumn: ");
+		result.append(viewportColumn);
+		result.append(", viewportHeight: ");
+		result.append(viewportHeight);
+		result.append(", viewportWidth: ");
+		result.append(viewportWidth);
+		result.append(", windowHeight: ");
+		result.append(windowHeight);
+		result.append(", windowWidth: ");
+		result.append(windowWidth);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralCreateWindowImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCursorTypeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCursorTypeImpl.java
new file mode 100644
index 0000000..37c5157
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralCursorTypeImpl.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Cursor Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralCursorTypeImpl#getCursorType <em>Cursor Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralCursorTypeImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralCursorType {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getCursorType() <em>Cursor Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCursorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayCursorType CURSOR_TYPE_EDEFAULT = StatemachineLineDisplayCursorType.DISP_CT_NONE;
+
+	/**
+	 * The cached value of the '{@link #getCursorType() <em>Cursor Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCursorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayCursorType cursorType = CURSOR_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralCursorTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayCursorType getCursorType() {
+		return cursorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCursorType(StatemachineLineDisplayCursorType newCursorType) {
+		StatemachineLineDisplayCursorType oldCursorType = cursorType;
+		cursorType = newCursorType == null ? CURSOR_TYPE_EDEFAULT : newCursorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE, oldCursorType, cursorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE:
+				return getCursorType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE:
+				setCursorType((StatemachineLineDisplayCursorType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE:
+				setCursorType(CURSOR_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE:
+				return cursorType != CURSOR_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(" (cursorType: ");
+		result.append(cursorType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralCursorTypeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDestroyWindowImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDestroyWindowImpl.java
new file mode 100644
index 0000000..31d8188
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDestroyWindowImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralDestroyWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Destroy Window</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDestroyWindowImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralDestroyWindowImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralDestroyWindow {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralDestroyWindowImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralDestroyWindowImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDeviceBrightnessImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDeviceBrightnessImpl.java
new file mode 100644
index 0000000..cdcc008
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDeviceBrightnessImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralDeviceBrightness;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Device Brightness</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDeviceBrightnessImpl#getBrightness <em>Brightness</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralDeviceBrightnessImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralDeviceBrightness {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getBrightness() <em>Brightness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBrightness()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BRIGHTNESS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBrightness() <em>Brightness</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBrightness()
+	 * @generated
+	 * @ordered
+	 */
+	protected int brightness = BRIGHTNESS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralDeviceBrightnessImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBrightness() {
+		return brightness;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBrightness(int newBrightness) {
+		int oldBrightness = brightness;
+		brightness = newBrightness;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS, oldBrightness, brightness));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS:
+				return getBrightness();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS:
+				setBrightness((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS:
+				setBrightness(BRIGHTNESS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS:
+				return brightness != BRIGHTNESS_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(" (brightness: ");
+		result.append(brightness);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralDeviceBrightnessImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayBitmapImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayBitmapImpl.java
new file mode 100644
index 0000000..0396810
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayBitmapImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralDisplayBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Display Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayBitmapImpl#getBitmapId <em>Bitmap Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralDisplayBitmapImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralDisplayBitmap {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BITMAP_ID_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected int bitmapId = BITMAP_ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralDisplayBitmapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBitmapId() {
+		return bitmapId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBitmapId(int newBitmapId) {
+		int oldBitmapId = bitmapId;
+		bitmapId = newBitmapId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID, oldBitmapId, bitmapId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID:
+				return getBitmapId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID:
+				setBitmapId((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID:
+				setBitmapId(BITMAP_ID_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID:
+				return bitmapId != BITMAP_ID_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(" (bitmapId: ");
+		result.append(bitmapId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralDisplayBitmapImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextAtImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextAtImpl.java
new file mode 100644
index 0000000..b1e986d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextAtImpl.java
@@ -0,0 +1,478 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Display Text At</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#getRow <em>Row</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#getColumn <em>Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#isHasType <em>Has Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextAtImpl#getTextType <em>Text Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralDisplayTextAtImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralDisplayTextAt {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getRow() <em>Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRow()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int ROW_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRow() <em>Row</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRow()
+	 * @generated
+	 * @ordered
+	 */
+	protected int row = ROW_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getColumn() <em>Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int COLUMN_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getColumn() <em>Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected int column = COLUMN_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation text;
+
+	/**
+	 * The default value of the '{@link #isHasType() <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_TYPE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasType() <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasType()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasType = HAS_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTextType() <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTextType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayTextType TEXT_TYPE_EDEFAULT = StatemachineLineDisplayTextType.DISP_DT_NORMAL;
+
+	/**
+	 * The cached value of the '{@link #getTextType() <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTextType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayTextType textType = TEXT_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralDisplayTextAtImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getRow() {
+		return row;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRow(int newRow) {
+		int oldRow = row;
+		row = newRow;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW, oldRow, row));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getColumn() {
+		return column;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setColumn(int newColumn) {
+		int oldColumn = column;
+		column = newColumn;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN, oldColumn, column));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetText(StatemachineActionFieldConcatenation newText, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldText = text;
+		text = newText;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT, oldText, newText);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(StatemachineActionFieldConcatenation newText) {
+		if (newText != text) {
+			NotificationChain msgs = null;
+			if (text != null)
+				msgs = ((InternalEObject)text).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT, null, msgs);
+			if (newText != null)
+				msgs = ((InternalEObject)newText).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT, null, msgs);
+			msgs = basicSetText(newText, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT, newText, newText));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasType() {
+		return hasType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasType(boolean newHasType) {
+		boolean oldHasType = hasType;
+		hasType = newHasType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE, oldHasType, hasType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayTextType getTextType() {
+		return textType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTextType(StatemachineLineDisplayTextType newTextType) {
+		StatemachineLineDisplayTextType oldTextType = textType;
+		textType = newTextType == null ? TEXT_TYPE_EDEFAULT : newTextType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE, oldTextType, textType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT:
+				return basicSetText(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW:
+				return getRow();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN:
+				return getColumn();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT:
+				return getText();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE:
+				return isHasType();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE:
+				return getTextType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW:
+				setRow((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN:
+				setColumn((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT:
+				setText((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE:
+				setHasType((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE:
+				setTextType((StatemachineLineDisplayTextType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW:
+				setRow(ROW_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN:
+				setColumn(COLUMN_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT:
+				setText((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE:
+				setHasType(HAS_TYPE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE:
+				setTextType(TEXT_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW:
+				return row != ROW_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN:
+				return column != COLUMN_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT:
+				return text != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE:
+				return hasType != HAS_TYPE_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE:
+				return textType != TEXT_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(" (row: ");
+		result.append(row);
+		result.append(", column: ");
+		result.append(column);
+		result.append(", hasType: ");
+		result.append(hasType);
+		result.append(", textType: ");
+		result.append(textType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralDisplayTextAtImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextImpl.java
new file mode 100644
index 0000000..2e8621f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralDisplayTextImpl.java
@@ -0,0 +1,370 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Display Text</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl#isHasType <em>Has Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralDisplayTextImpl#getTextType <em>Text Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralDisplayTextImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralDisplayText {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation text;
+
+	/**
+	 * The default value of the '{@link #isHasType() <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_TYPE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasType() <em>Has Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasType()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasType = HAS_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTextType() <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTextType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayTextType TEXT_TYPE_EDEFAULT = StatemachineLineDisplayTextType.DISP_DT_NORMAL;
+
+	/**
+	 * The cached value of the '{@link #getTextType() <em>Text Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTextType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayTextType textType = TEXT_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralDisplayTextImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetText(StatemachineActionFieldConcatenation newText, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldText = text;
+		text = newText;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT, oldText, newText);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(StatemachineActionFieldConcatenation newText) {
+		if (newText != text) {
+			NotificationChain msgs = null;
+			if (text != null)
+				msgs = ((InternalEObject)text).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT, null, msgs);
+			if (newText != null)
+				msgs = ((InternalEObject)newText).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT, null, msgs);
+			msgs = basicSetText(newText, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT, newText, newText));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasType() {
+		return hasType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasType(boolean newHasType) {
+		boolean oldHasType = hasType;
+		hasType = newHasType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE, oldHasType, hasType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayTextType getTextType() {
+		return textType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTextType(StatemachineLineDisplayTextType newTextType) {
+		StatemachineLineDisplayTextType oldTextType = textType;
+		textType = newTextType == null ? TEXT_TYPE_EDEFAULT : newTextType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE, oldTextType, textType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT:
+				return basicSetText(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT:
+				return getText();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE:
+				return isHasType();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE:
+				return getTextType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT:
+				setText((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE:
+				setHasType((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE:
+				setTextType((StatemachineLineDisplayTextType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT:
+				setText((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE:
+				setHasType(HAS_TYPE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE:
+				setTextType(TEXT_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT:
+				return text != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE:
+				return hasType != HAS_TYPE_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE:
+				return textType != TEXT_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(" (hasType: ");
+		result.append(hasType);
+		result.append(", textType: ");
+		result.append(textType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralDisplayTextImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralInterCharacterWaitImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralInterCharacterWaitImpl.java
new file mode 100644
index 0000000..8562aca
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralInterCharacterWaitImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralInterCharacterWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Inter Character Wait</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralInterCharacterWaitImpl#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralInterCharacterWaitImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralInterCharacterWait {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WAIT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected int wait = WAIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralInterCharacterWaitImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWait() {
+		return wait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWait(int newWait) {
+		int oldWait = wait;
+		wait = newWait;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT, oldWait, wait));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT:
+				return getWait();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT:
+				setWait((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT:
+				setWait(WAIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT:
+				return wait != WAIT_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(" (wait: ");
+		result.append(wait);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralInterCharacterWaitImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeFormatImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeFormatImpl.java
new file mode 100644
index 0000000..10bcbe0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeFormatImpl.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Marquee Format</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeFormatImpl#getFormat <em>Format</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralMarqueeFormatImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralMarqueeFormat {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getFormat() <em>Format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFormat()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayMarqueeFormat FORMAT_EDEFAULT = StatemachineLineDisplayMarqueeFormat.DISP_MF_WALK;
+
+	/**
+	 * The cached value of the '{@link #getFormat() <em>Format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFormat()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayMarqueeFormat format = FORMAT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralMarqueeFormatImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayMarqueeFormat getFormat() {
+		return format;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFormat(StatemachineLineDisplayMarqueeFormat newFormat) {
+		StatemachineLineDisplayMarqueeFormat oldFormat = format;
+		format = newFormat == null ? FORMAT_EDEFAULT : newFormat;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT, oldFormat, format));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT:
+				return getFormat();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT:
+				setFormat((StatemachineLineDisplayMarqueeFormat)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT:
+				setFormat(FORMAT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT:
+				return format != FORMAT_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(" (format: ");
+		result.append(format);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralMarqueeFormatImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeRepeatWaitImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeRepeatWaitImpl.java
new file mode 100644
index 0000000..81449dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeRepeatWaitImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralMarqueeRepeatWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Marquee Repeat Wait</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeRepeatWaitImpl#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralMarqueeRepeatWaitImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralMarqueeRepeatWait {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WAIT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected int wait = WAIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralMarqueeRepeatWaitImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWait() {
+		return wait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWait(int newWait) {
+		int oldWait = wait;
+		wait = newWait;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT, oldWait, wait));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT:
+				return getWait();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT:
+				setWait((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT:
+				setWait(WAIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT:
+				return wait != WAIT_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(" (wait: ");
+		result.append(wait);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralMarqueeRepeatWaitImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeTypeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeTypeImpl.java
new file mode 100644
index 0000000..10b394b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeTypeImpl.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Marquee Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeTypeImpl#getMarqueeType <em>Marquee Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralMarqueeTypeImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralMarqueeType {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getMarqueeType() <em>Marquee Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMarqueeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayMarqueeType MARQUEE_TYPE_EDEFAULT = StatemachineLineDisplayMarqueeType.DISP_MT_NONE;
+
+	/**
+	 * The cached value of the '{@link #getMarqueeType() <em>Marquee Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMarqueeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayMarqueeType marqueeType = MARQUEE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralMarqueeTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayMarqueeType getMarqueeType() {
+		return marqueeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMarqueeType(StatemachineLineDisplayMarqueeType newMarqueeType) {
+		StatemachineLineDisplayMarqueeType oldMarqueeType = marqueeType;
+		marqueeType = newMarqueeType == null ? MARQUEE_TYPE_EDEFAULT : newMarqueeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE, oldMarqueeType, marqueeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE:
+				return getMarqueeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE:
+				setMarqueeType((StatemachineLineDisplayMarqueeType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE:
+				setMarqueeType(MARQUEE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE:
+				return marqueeType != MARQUEE_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(" (marqueeType: ");
+		result.append(marqueeType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralMarqueeTypeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeUnitWaitImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeUnitWaitImpl.java
new file mode 100644
index 0000000..bc7fcc4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralMarqueeUnitWaitImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralMarqueeUnitWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Marquee Unit Wait</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralMarqueeUnitWaitImpl#getWait <em>Wait</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralMarqueeUnitWaitImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralMarqueeUnitWait {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WAIT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWait() <em>Wait</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWait()
+	 * @generated
+	 * @ordered
+	 */
+	protected int wait = WAIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralMarqueeUnitWaitImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWait() {
+		return wait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWait(int newWait) {
+		int oldWait = wait;
+		wait = newWait;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT, oldWait, wait));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT:
+				return getWait();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT:
+				setWait((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT:
+				setWait(WAIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT:
+				return wait != WAIT_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(" (wait: ");
+		result.append(wait);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralMarqueeUnitWaitImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralOpenDrawerImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralOpenDrawerImpl.java
new file mode 100644
index 0000000..66271a0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralOpenDrawerImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralOpenDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Open Drawer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralOpenDrawerImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralOpenDrawerImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralOpenDrawer {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceCashDrawer device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralOpenDrawerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceCashDrawer getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceCashDrawer)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceCashDrawer basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceCashDrawer newDevice) {
+		StatemachinePeripheralDeviceCashDrawer oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE:
+				setDevice((StatemachinePeripheralDeviceCashDrawer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE:
+				setDevice((StatemachinePeripheralDeviceCashDrawer)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralOpenDrawerImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAcknowledgeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAcknowledgeImpl.java
new file mode 100644
index 0000000..cf09fac
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAcknowledgeImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPTAcknowledge;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Acknowledge</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAcknowledgeImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTAcknowledgeImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTAcknowledge {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTAcknowledgeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTAcknowledgeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAuthorizationImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAuthorizationImpl.java
new file mode 100644
index 0000000..f86d3eb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTAuthorizationImpl.java
@@ -0,0 +1,247 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Authorization</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTAuthorizationImpl#getAmount <em>Amount</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTAuthorizationImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTAuthorization {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * The cached value of the '{@link #getAmount() <em>Amount</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAmount()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation amount;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTAuthorizationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getAmount() {
+		return amount;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAmount(StatemachineActionFieldConcatenation newAmount, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldAmount = amount;
+		amount = newAmount;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT, oldAmount, newAmount);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAmount(StatemachineActionFieldConcatenation newAmount) {
+		if (newAmount != amount) {
+			NotificationChain msgs = null;
+			if (amount != null)
+				msgs = ((InternalEObject)amount).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT, null, msgs);
+			if (newAmount != null)
+				msgs = ((InternalEObject)newAmount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT, null, msgs);
+			msgs = basicSetAmount(newAmount, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT, newAmount, newAmount));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT:
+				return basicSetAmount(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT:
+				return getAmount();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT:
+				setAmount((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT:
+				setAmount((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT:
+				return amount != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTAuthorizationImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTCloseImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTCloseImpl.java
new file mode 100644
index 0000000..2296081
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTCloseImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPTClose;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Close</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTCloseImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTCloseImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTClose {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTCloseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTCloseImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTOpenImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTOpenImpl.java
new file mode 100644
index 0000000..52eaaee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTOpenImpl.java
@@ -0,0 +1,313 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Open</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl#getHost <em>Host</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTOpenImpl#getPort <em>Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTOpenImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTOpen {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * The cached value of the '{@link #getHost() <em>Host</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHost()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation host;
+
+	/**
+	 * The cached value of the '{@link #getPort() <em>Port</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation port;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTOpenImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getHost() {
+		return host;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetHost(StatemachineActionFieldConcatenation newHost, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldHost = host;
+		host = newHost;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST, oldHost, newHost);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHost(StatemachineActionFieldConcatenation newHost) {
+		if (newHost != host) {
+			NotificationChain msgs = null;
+			if (host != null)
+				msgs = ((InternalEObject)host).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST, null, msgs);
+			if (newHost != null)
+				msgs = ((InternalEObject)newHost).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST, null, msgs);
+			msgs = basicSetHost(newHost, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST, newHost, newHost));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getPort() {
+		return port;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPort(StatemachineActionFieldConcatenation newPort, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldPort = port;
+		port = newPort;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT, oldPort, newPort);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPort(StatemachineActionFieldConcatenation newPort) {
+		if (newPort != port) {
+			NotificationChain msgs = null;
+			if (port != null)
+				msgs = ((InternalEObject)port).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT, null, msgs);
+			if (newPort != null)
+				msgs = ((InternalEObject)newPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT, null, msgs);
+			msgs = basicSetPort(newPort, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT, newPort, newPort));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST:
+				return basicSetHost(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT:
+				return basicSetPort(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST:
+				return getHost();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT:
+				return getPort();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST:
+				setHost((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT:
+				setPort((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST:
+				setHost((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT:
+				setPort((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST:
+				return host != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT:
+				return port != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTOpenImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTRegistrationImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTRegistrationImpl.java
new file mode 100644
index 0000000..c1e601e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTRegistrationImpl.java
@@ -0,0 +1,315 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Registration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl#getPassword <em>Password</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTRegistrationImpl#getConfiguration <em>Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTRegistrationImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTRegistration {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * The cached value of the '{@link #getPassword() <em>Password</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation password;
+
+	/**
+	 * The default value of the '{@link #getConfiguration() <em>Configuration</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConfiguration()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONFIGURATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getConfiguration() <em>Configuration</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConfiguration()
+	 * @generated
+	 * @ordered
+	 */
+	protected String configuration = CONFIGURATION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTRegistrationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getPassword() {
+		return password;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPassword(StatemachineActionFieldConcatenation newPassword, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldPassword = password;
+		password = newPassword;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD, oldPassword, newPassword);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPassword(StatemachineActionFieldConcatenation newPassword) {
+		if (newPassword != password) {
+			NotificationChain msgs = null;
+			if (password != null)
+				msgs = ((InternalEObject)password).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD, null, msgs);
+			if (newPassword != null)
+				msgs = ((InternalEObject)newPassword).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD, null, msgs);
+			msgs = basicSetPassword(newPassword, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD, newPassword, newPassword));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getConfiguration() {
+		return configuration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConfiguration(String newConfiguration) {
+		String oldConfiguration = configuration;
+		configuration = newConfiguration;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION, oldConfiguration, configuration));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD:
+				return basicSetPassword(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD:
+				return getPassword();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION:
+				return getConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD:
+				setPassword((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION:
+				setConfiguration((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD:
+				setPassword((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION:
+				setConfiguration(CONFIGURATION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD:
+				return password != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION:
+				return CONFIGURATION_EDEFAULT == null ? configuration != null : !CONFIGURATION_EDEFAULT.equals(configuration);
+		}
+		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(" (configuration: ");
+		result.append(configuration);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPTRegistrationImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTResponseImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTResponseImpl.java
new file mode 100644
index 0000000..f194bef
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTResponseImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPTResponse;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Response</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTResponseImpl#getDevice <em>Device</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTResponseImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTResponse {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTResponseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE:
+				return device != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTResponseImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTReversalImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTReversalImpl.java
new file mode 100644
index 0000000..3e6109d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPTReversalImpl.java
@@ -0,0 +1,313 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral PT Reversal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl#getPassword <em>Password</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPTReversalImpl#getReceipt <em>Receipt</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPTReversalImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPTReversal {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePT device;
+
+	/**
+	 * The cached value of the '{@link #getPassword() <em>Password</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation password;
+
+	/**
+	 * The cached value of the '{@link #getReceipt() <em>Receipt</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReceipt()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation receipt;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPTReversalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePT)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePT newDevice) {
+		StatemachinePeripheralDevicePT oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getPassword() {
+		return password;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPassword(StatemachineActionFieldConcatenation newPassword, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldPassword = password;
+		password = newPassword;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD, oldPassword, newPassword);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPassword(StatemachineActionFieldConcatenation newPassword) {
+		if (newPassword != password) {
+			NotificationChain msgs = null;
+			if (password != null)
+				msgs = ((InternalEObject)password).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD, null, msgs);
+			if (newPassword != null)
+				msgs = ((InternalEObject)newPassword).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD, null, msgs);
+			msgs = basicSetPassword(newPassword, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD, newPassword, newPassword));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getReceipt() {
+		return receipt;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetReceipt(StatemachineActionFieldConcatenation newReceipt, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldReceipt = receipt;
+		receipt = newReceipt;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT, oldReceipt, newReceipt);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReceipt(StatemachineActionFieldConcatenation newReceipt) {
+		if (newReceipt != receipt) {
+			NotificationChain msgs = null;
+			if (receipt != null)
+				msgs = ((InternalEObject)receipt).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT, null, msgs);
+			if (newReceipt != null)
+				msgs = ((InternalEObject)newReceipt).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT, null, msgs);
+			msgs = basicSetReceipt(newReceipt, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT, newReceipt, newReceipt));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD:
+				return basicSetPassword(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT:
+				return basicSetReceipt(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD:
+				return getPassword();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT:
+				return getReceipt();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD:
+				setPassword((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT:
+				setReceipt((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE:
+				setDevice((StatemachinePeripheralDevicePT)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD:
+				setPassword((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT:
+				setReceipt((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD:
+				return password != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT:
+				return receipt != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPTReversalImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBarcodeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBarcodeImpl.java
new file mode 100644
index 0000000..9185c7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBarcodeImpl.java
@@ -0,0 +1,290 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPrintBarcode;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Barcode</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBarcodeImpl#getBarcodeType <em>Barcode Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintBarcodeImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintBarcode {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePOSPrinter device;
+
+	/**
+	 * The default value of the '{@link #getData() <em>Data</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DATA_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getData() <em>Data</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData()
+	 * @generated
+	 * @ordered
+	 */
+	protected String data = DATA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBarcodeType() <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBarcodeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachinePOSPrinterBarcodeType BARCODE_TYPE_EDEFAULT = StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCA;
+
+	/**
+	 * The cached value of the '{@link #getBarcodeType() <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBarcodeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePOSPrinterBarcodeType barcodeType = BARCODE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintBarcodeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePOSPrinter)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePOSPrinter newDevice) {
+		StatemachinePeripheralDevicePOSPrinter oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getData() {
+		return data;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setData(String newData) {
+		String oldData = data;
+		data = newData;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA, oldData, data));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePOSPrinterBarcodeType getBarcodeType() {
+		return barcodeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBarcodeType(StatemachinePOSPrinterBarcodeType newBarcodeType) {
+		StatemachinePOSPrinterBarcodeType oldBarcodeType = barcodeType;
+		barcodeType = newBarcodeType == null ? BARCODE_TYPE_EDEFAULT : newBarcodeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE, oldBarcodeType, barcodeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA:
+				return getData();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE:
+				return getBarcodeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA:
+				setData((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE:
+				setBarcodeType((StatemachinePOSPrinterBarcodeType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA:
+				setData(DATA_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE:
+				setBarcodeType(BARCODE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA:
+				return DATA_EDEFAULT == null ? data != null : !DATA_EDEFAULT.equals(data);
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE:
+				return barcodeType != BARCODE_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(" (data: ");
+		result.append(data);
+		result.append(", barcodeType: ");
+		result.append(barcodeType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPrintBarcodeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBitmapImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBitmapImpl.java
new file mode 100644
index 0000000..7814a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintBitmapImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPrintBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintBitmapImpl#getBitmapId <em>Bitmap Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintBitmapImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintBitmap {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePOSPrinter device;
+
+	/**
+	 * The default value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BITMAP_ID_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected int bitmapId = BITMAP_ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintBitmapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePOSPrinter)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePOSPrinter newDevice) {
+		StatemachinePeripheralDevicePOSPrinter oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBitmapId() {
+		return bitmapId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBitmapId(int newBitmapId) {
+		int oldBitmapId = bitmapId;
+		bitmapId = newBitmapId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID, oldBitmapId, bitmapId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID:
+				return getBitmapId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID:
+				setBitmapId((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID:
+				setBitmapId(BITMAP_ID_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID:
+				return bitmapId != BITMAP_ID_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(" (bitmapId: ");
+		result.append(bitmapId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPrintBitmapImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintCutImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintCutImpl.java
new file mode 100644
index 0000000..5e48da9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintCutImpl.java
@@ -0,0 +1,247 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Cut</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintCutImpl#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintCutImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintCut {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePOSPrinter device;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation text;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintCutImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePOSPrinter)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePOSPrinter newDevice) {
+		StatemachinePeripheralDevicePOSPrinter oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetText(StatemachineActionFieldConcatenation newText, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldText = text;
+		text = newText;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT, oldText, newText);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(StatemachineActionFieldConcatenation newText) {
+		if (newText != text) {
+			NotificationChain msgs = null;
+			if (text != null)
+				msgs = ((InternalEObject)text).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT, null, msgs);
+			if (newText != null)
+				msgs = ((InternalEObject)newText).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT, null, msgs);
+			msgs = basicSetText(newText, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT, newText, newText));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT:
+				return basicSetText(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT:
+				return getText();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT:
+				setText((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT:
+				setText((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT:
+				return text != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionPeripheralPrintCutImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintNormalImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintNormalImpl.java
new file mode 100644
index 0000000..1add76c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintNormalImpl.java
@@ -0,0 +1,316 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Normal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl#getText <em>Text</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintNormalImpl#getBarcodeType <em>Barcode Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintNormalImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintNormal {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePOSPrinter device;
+
+	/**
+	 * The cached value of the '{@link #getText() <em>Text</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getText()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation text;
+
+	/**
+	 * The default value of the '{@link #getBarcodeType() <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBarcodeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachinePOSPrinterBarcodeType BARCODE_TYPE_EDEFAULT = StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCA;
+
+	/**
+	 * The cached value of the '{@link #getBarcodeType() <em>Barcode Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBarcodeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePOSPrinterBarcodeType barcodeType = BARCODE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintNormalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePOSPrinter)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePOSPrinter newDevice) {
+		StatemachinePeripheralDevicePOSPrinter oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getText() {
+		return text;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetText(StatemachineActionFieldConcatenation newText, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldText = text;
+		text = newText;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT, oldText, newText);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setText(StatemachineActionFieldConcatenation newText) {
+		if (newText != text) {
+			NotificationChain msgs = null;
+			if (text != null)
+				msgs = ((InternalEObject)text).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT, null, msgs);
+			if (newText != null)
+				msgs = ((InternalEObject)newText).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT, null, msgs);
+			msgs = basicSetText(newText, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT, newText, newText));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePOSPrinterBarcodeType getBarcodeType() {
+		return barcodeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBarcodeType(StatemachinePOSPrinterBarcodeType newBarcodeType) {
+		StatemachinePOSPrinterBarcodeType oldBarcodeType = barcodeType;
+		barcodeType = newBarcodeType == null ? BARCODE_TYPE_EDEFAULT : newBarcodeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE, oldBarcodeType, barcodeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT:
+				return basicSetText(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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT:
+				return getText();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE:
+				return getBarcodeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT:
+				setText((StatemachineActionFieldConcatenation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE:
+				setBarcodeType((StatemachinePOSPrinterBarcodeType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT:
+				setText((StatemachineActionFieldConcatenation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE:
+				setBarcodeType(BARCODE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT:
+				return text != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE:
+				return barcodeType != BARCODE_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(" (barcodeType: ");
+		result.append(barcodeType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPrintNormalImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintRegisterBitmapImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintRegisterBitmapImpl.java
new file mode 100644
index 0000000..1f0df65
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintRegisterBitmapImpl.java
@@ -0,0 +1,289 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralPrintRegisterBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Register Bitmap</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl#getBitmapId <em>Bitmap Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintRegisterBitmapImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintRegisterBitmapImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintRegisterBitmap {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDevicePOSPrinter device;
+
+	/**
+	 * The default value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BITMAP_ID_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBitmapId() <em>Bitmap Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBitmapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected int bitmapId = BITMAP_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintRegisterBitmapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDevicePOSPrinter)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDevicePOSPrinter newDevice) {
+		StatemachinePeripheralDevicePOSPrinter oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBitmapId() {
+		return bitmapId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBitmapId(int newBitmapId) {
+		int oldBitmapId = bitmapId;
+		bitmapId = newBitmapId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID, oldBitmapId, bitmapId));
+	}
+
+	/**
+	 * <!-- 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, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID:
+				return getBitmapId();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID:
+				setBitmapId((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__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 StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE:
+				setDevice((StatemachinePeripheralDevicePOSPrinter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID:
+				setBitmapId(BITMAP_ID_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID:
+				return bitmapId != BITMAP_ID_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__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(" (bitmapId: ");
+		result.append(bitmapId);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPrintRegisterBitmapImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintReportImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintReportImpl.java
new file mode 100644
index 0000000..de3f8a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralPrintReportImpl.java
@@ -0,0 +1,297 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.reportdsl.Report;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Print Report</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl#getReport <em>Report</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralPrintReportImpl#isHasFilter <em>Has Filter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralPrintReportImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralPrintReport {
+	/**
+	 * The cached value of the '{@link #getReport() <em>Report</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReport()
+	 * @generated
+	 * @ordered
+	 */
+	protected Report report;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineStorage key;
+
+	/**
+	 * The default value of the '{@link #isHasFilter() <em>Has Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_FILTER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasFilter() <em>Has Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasFilter = HAS_FILTER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralPrintReportImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Report getReport() {
+		if (report != null && report.eIsProxy()) {
+			InternalEObject oldReport = (InternalEObject)report;
+			report = (Report)eResolveProxy(oldReport);
+			if (report != oldReport) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT, oldReport, report));
+			}
+		}
+		return report;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Report basicGetReport() {
+		return report;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReport(Report newReport) {
+		Report oldReport = report;
+		report = newReport;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT, oldReport, report));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineStorage getKey() {
+		if (key != null && key.eIsProxy()) {
+			InternalEObject oldKey = (InternalEObject)key;
+			key = (StatemachineStorage)eResolveProxy(oldKey);
+			if (key != oldKey) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY, oldKey, key));
+			}
+		}
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineStorage basicGetKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(StatemachineStorage newKey) {
+		StatemachineStorage oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasFilter() {
+		return hasFilter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasFilter(boolean newHasFilter) {
+		boolean oldHasFilter = hasFilter;
+		hasFilter = newHasFilter;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER, oldHasFilter, hasFilter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT:
+				if (resolve) return getReport();
+				return basicGetReport();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY:
+				if (resolve) return getKey();
+				return basicGetKey();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER:
+				return isHasFilter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT:
+				setReport((Report)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY:
+				setKey((StatemachineStorage)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER:
+				setHasFilter((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT:
+				setReport((Report)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY:
+				setKey((StatemachineStorage)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER:
+				setHasFilter(HAS_FILTER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT:
+				return report != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY:
+				return key != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER:
+				return hasFilter != HAS_FILTER_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(" (hasFilter: ");
+		result.append(hasFilter);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralPrintReportImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralScrollImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralScrollImpl.java
new file mode 100644
index 0000000..fa96115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionPeripheralScrollImpl.java
@@ -0,0 +1,290 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionPeripheralScroll;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Peripheral Scroll</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl#getDirection <em>Direction</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionPeripheralScrollImpl#getUnits <em>Units</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionPeripheralScrollImpl extends StatemachineLazyResolverImpl implements StatemachineActionPeripheralScroll {
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachinePeripheralDeviceLineDisplay device;
+
+	/**
+	 * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineLineDisplayScrollTextType DIRECTION_EDEFAULT = StatemachineLineDisplayScrollTextType.DISP_ST_UP;
+
+	/**
+	 * The cached value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineLineDisplayScrollTextType direction = DIRECTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getUnits() <em>Units</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnits()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int UNITS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getUnits() <em>Units</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnits()
+	 * @generated
+	 * @ordered
+	 */
+	protected int units = UNITS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionPeripheralScrollImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (StatemachinePeripheralDeviceLineDisplay)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDevice(StatemachinePeripheralDeviceLineDisplay newDevice) {
+		StatemachinePeripheralDeviceLineDisplay oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayScrollTextType getDirection() {
+		return direction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirection(StatemachineLineDisplayScrollTextType newDirection) {
+		StatemachineLineDisplayScrollTextType oldDirection = direction;
+		direction = newDirection == null ? DIRECTION_EDEFAULT : newDirection;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION, oldDirection, direction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getUnits() {
+		return units;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUnits(int newUnits) {
+		int oldUnits = units;
+		units = newUnits;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS, oldUnits, units));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION:
+				return getDirection();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS:
+				return getUnits();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION:
+				setDirection((StatemachineLineDisplayScrollTextType)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS:
+				setUnits((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE:
+				setDevice((StatemachinePeripheralDeviceLineDisplay)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION:
+				setDirection(DIRECTION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS:
+				setUnits(UNITS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE:
+				return device != null;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION:
+				return direction != DIRECTION_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS:
+				return units != UNITS_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(" (direction: ");
+		result.append(direction);
+		result.append(", units: ");
+		result.append(units);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineActionPeripheralScrollImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionSchedulerImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionSchedulerImpl.java
new file mode 100644
index 0000000..09004e1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineActionSchedulerImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Action Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineActionSchedulerImpl#getScheduler <em>Scheduler</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineActionSchedulerImpl extends StatemachineLazyResolverImpl implements StatemachineActionScheduler {
+	/**
+	 * The cached value of the '{@link #getScheduler() <em>Scheduler</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScheduler()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlSchedulerAttribute scheduler;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineActionSchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlSchedulerAttribute getScheduler() {
+		if (scheduler != null && scheduler.eIsProxy()) {
+			InternalEObject oldScheduler = (InternalEObject)scheduler;
+			scheduler = (StatemachineControlSchedulerAttribute)eResolveProxy(oldScheduler);
+			if (scheduler != oldScheduler) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER, oldScheduler, scheduler));
+			}
+		}
+		return scheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlSchedulerAttribute basicGetScheduler() {
+		return scheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScheduler(StatemachineControlSchedulerAttribute newScheduler) {
+		StatemachineControlSchedulerAttribute oldScheduler = scheduler;
+		scheduler = newScheduler;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER, oldScheduler, scheduler));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER:
+				if (resolve) return getScheduler();
+				return basicGetScheduler();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER:
+				setScheduler((StatemachineControlSchedulerAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER:
+				setScheduler((StatemachineControlSchedulerAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER:
+				return scheduler != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineActionSchedulerImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineBaseImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineBaseImpl.java
new file mode 100644
index 0000000..8dd5170
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineBaseImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineBase;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Base</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineBaseImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineBaseImpl extends StatemachineLazyResolverImpl implements StatemachineBase {
+	/**
+	 * 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 StatemachineBaseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_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, StatemachineDSLPackage.STATEMACHINE_BASE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_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();
+	}
+
+} //StatemachineBaseImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventEventImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventEventImpl.java
new file mode 100644
index 0000000..61eac8c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventEventImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlButtonAttributeEventEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Button Attribute Event Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventEventImpl#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlButtonAttributeEventEventImpl extends StatemachineLazyResolverImpl implements StatemachineControlButtonAttributeEventEvent {
+	/**
+	 * The cached value of the '{@link #getEvent() <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineEvent event;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlButtonAttributeEventEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent getEvent() {
+		if (event != null && event.eIsProxy()) {
+			InternalEObject oldEvent = (InternalEObject)event;
+			event = (StatemachineEvent)eResolveProxy(oldEvent);
+			if (event != oldEvent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT, oldEvent, event));
+			}
+		}
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent basicGetEvent() {
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvent(StatemachineEvent newEvent) {
+		StatemachineEvent oldEvent = event;
+		event = newEvent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT, oldEvent, event));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT:
+				if (resolve) return getEvent();
+				return basicGetEvent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT:
+				setEvent((StatemachineEvent)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT:
+				setEvent((StatemachineEvent)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT:
+				return event != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlButtonAttributeEventEventImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventIdentityImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventIdentityImpl.java
new file mode 100644
index 0000000..e04630d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventIdentityImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlButtonAttributeEventIdentity;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Button Attribute Event Identity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventIdentityImpl#getIdentity <em>Identity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlButtonAttributeEventIdentityImpl extends StatemachineLazyResolverImpl implements StatemachineControlButtonAttributeEventIdentity {
+	/**
+	 * The default value of the '{@link #getIdentity() <em>Identity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIdentity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IDENTITY_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIdentity() <em>Identity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIdentity()
+	 * @generated
+	 * @ordered
+	 */
+	protected int identity = IDENTITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlButtonAttributeEventIdentityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getIdentity() {
+		return identity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIdentity(int newIdentity) {
+		int oldIdentity = identity;
+		identity = newIdentity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY, oldIdentity, identity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY:
+				return getIdentity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY:
+				setIdentity((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY:
+				setIdentity(IDENTITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY:
+				return identity != IDENTITY_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(" (identity: ");
+		result.append(identity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlButtonAttributeEventIdentityImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventKeyboardImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventKeyboardImpl.java
new file mode 100644
index 0000000..d197cf4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeEventKeyboardImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlButtonAttributeEventKeyboard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Button Attribute Event Keyboard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeEventKeyboardImpl#getKeystroke <em>Keystroke</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlButtonAttributeEventKeyboardImpl extends StatemachineLazyResolverImpl implements StatemachineControlButtonAttributeEventKeyboard {
+	/**
+	 * The default value of the '{@link #getKeystroke() <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeystroke()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEYSTROKE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKeystroke() <em>Keystroke</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeystroke()
+	 * @generated
+	 * @ordered
+	 */
+	protected String keystroke = KEYSTROKE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlButtonAttributeEventKeyboardImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKeystroke() {
+		return keystroke;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeystroke(String newKeystroke) {
+		String oldKeystroke = keystroke;
+		keystroke = newKeystroke;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE, oldKeystroke, keystroke));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE:
+				return getKeystroke();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE:
+				setKeystroke((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE:
+				setKeystroke(KEYSTROKE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE:
+				return KEYSTROKE_EDEFAULT == null ? keystroke != null : !KEYSTROKE_EDEFAULT.equals(keystroke);
+		}
+		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(" (keystroke: ");
+		result.append(keystroke);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlButtonAttributeEventKeyboardImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeImpl.java
new file mode 100644
index 0000000..e536662
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonAttributeImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Button Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl#isHasImage <em>Has Image</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl#getImage <em>Image</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonAttributeImpl#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlButtonAttributeImpl extends StatemachineBaseImpl implements StatemachineControlButtonAttribute {
+	/**
+	 * The default value of the '{@link #isHasImage() <em>Has Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_IMAGE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasImage() <em>Has Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasImage = HAS_IMAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getImage() <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String IMAGE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getImage() <em>Image</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImage()
+	 * @generated
+	 * @ordered
+	 */
+	protected String image = IMAGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getEvent() <em>Event</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlButtonAttributeEvent event;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlButtonAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasImage() {
+		return hasImage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasImage(boolean newHasImage) {
+		boolean oldHasImage = hasImage;
+		hasImage = newHasImage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE, oldHasImage, hasImage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getImage() {
+		return image;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImage(String newImage) {
+		String oldImage = image;
+		image = newImage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE, oldImage, image));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttributeEvent getEvent() {
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetEvent(StatemachineControlButtonAttributeEvent newEvent, NotificationChain msgs) {
+		StatemachineControlButtonAttributeEvent oldEvent = event;
+		event = newEvent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT, oldEvent, newEvent);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvent(StatemachineControlButtonAttributeEvent newEvent) {
+		if (newEvent != event) {
+			NotificationChain msgs = null;
+			if (event != null)
+				msgs = ((InternalEObject)event).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT, null, msgs);
+			if (newEvent != null)
+				msgs = ((InternalEObject)newEvent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT, null, msgs);
+			msgs = basicSetEvent(newEvent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT, newEvent, newEvent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT:
+				return basicSetEvent(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 StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE:
+				return isHasImage();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE:
+				return getImage();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT:
+				return getEvent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE:
+				setHasImage((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE:
+				setImage((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT:
+				setEvent((StatemachineControlButtonAttributeEvent)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE:
+				setHasImage(HAS_IMAGE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE:
+				setImage(IMAGE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT:
+				setEvent((StatemachineControlButtonAttributeEvent)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE:
+				return hasImage != HAS_IMAGE_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE:
+				return IMAGE_EDEFAULT == null ? image != null : !IMAGE_EDEFAULT.equals(image);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT:
+				return event != 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(" (hasImage: ");
+		result.append(hasImage);
+		result.append(", image: ");
+		result.append(image);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlButtonAttributeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonImpl.java
new file mode 100644
index 0000000..020166c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlButtonImpl.java
@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlButton;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Button</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl#getEventType <em>Event Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlButtonImpl#getButtons <em>Buttons</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlButtonImpl extends StatemachineBaseImpl implements StatemachineControlButton {
+	/**
+	 * The default value of the '{@link #getEventType() <em>Event Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEventType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineControlButtonEventType EVENT_TYPE_EDEFAULT = StatemachineControlButtonEventType.KEYBOARD;
+
+	/**
+	 * The cached value of the '{@link #getEventType() <em>Event Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEventType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlButtonEventType eventType = EVENT_TYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getButtons() <em>Buttons</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getButtons()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControlButtonAttribute> buttons;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlButtonImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonEventType getEventType() {
+		return eventType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEventType(StatemachineControlButtonEventType newEventType) {
+		StatemachineControlButtonEventType oldEventType = eventType;
+		eventType = newEventType == null ? EVENT_TYPE_EDEFAULT : newEventType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE, oldEventType, eventType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControlButtonAttribute> getButtons() {
+		if (buttons == null) {
+			buttons = new EObjectContainmentEList<StatemachineControlButtonAttribute>(StatemachineControlButtonAttribute.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS);
+		}
+		return buttons;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS:
+				return ((InternalEList<?>)getButtons()).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 StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE:
+				return getEventType();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS:
+				return getButtons();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE:
+				setEventType((StatemachineControlButtonEventType)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS:
+				getButtons().clear();
+				getButtons().addAll((Collection<? extends StatemachineControlButtonAttribute>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE:
+				setEventType(EVENT_TYPE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS:
+				getButtons().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE:
+				return eventType != EVENT_TYPE_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON__BUTTONS:
+				return buttons != null && !buttons.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(" (eventType: ");
+		result.append(eventType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlButtonImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOAttributeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOAttributeImpl.java
new file mode 100644
index 0000000..2d346ea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOAttributeImpl.java
@@ -0,0 +1,315 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control DTO Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl#getAttributeType <em>Attribute Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl#isHasEvent <em>Has Event</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOAttributeImpl#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlDTOAttributeImpl extends StatemachineBaseImpl implements StatemachineControlDTOAttribute {
+	/**
+	 * The cached value of the '{@link #getAttributeType() <em>Attribute Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineDTOType attributeType;
+
+	/**
+	 * The default value of the '{@link #isHasEvent() <em>Has Event</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_EVENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasEvent() <em>Has Event</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasEvent = HAS_EVENT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getEvent() <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineEvent event;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlDTOAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_DTO_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDTOType getAttributeType() {
+		return attributeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAttributeType(StatemachineDTOType newAttributeType, NotificationChain msgs) {
+		StatemachineDTOType oldAttributeType = attributeType;
+		attributeType = newAttributeType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE, oldAttributeType, newAttributeType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttributeType(StatemachineDTOType newAttributeType) {
+		if (newAttributeType != attributeType) {
+			NotificationChain msgs = null;
+			if (attributeType != null)
+				msgs = ((InternalEObject)attributeType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE, null, msgs);
+			if (newAttributeType != null)
+				msgs = ((InternalEObject)newAttributeType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE, null, msgs);
+			msgs = basicSetAttributeType(newAttributeType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE, newAttributeType, newAttributeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasEvent() {
+		return hasEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasEvent(boolean newHasEvent) {
+		boolean oldHasEvent = hasEvent;
+		hasEvent = newHasEvent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT, oldHasEvent, hasEvent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent getEvent() {
+		if (event != null && event.eIsProxy()) {
+			InternalEObject oldEvent = (InternalEObject)event;
+			event = (StatemachineEvent)eResolveProxy(oldEvent);
+			if (event != oldEvent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT, oldEvent, event));
+			}
+		}
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent basicGetEvent() {
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvent(StatemachineEvent newEvent) {
+		StatemachineEvent oldEvent = event;
+		event = newEvent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT, oldEvent, event));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return basicSetAttributeType(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 StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return getAttributeType();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT:
+				return isHasEvent();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT:
+				if (resolve) return getEvent();
+				return basicGetEvent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE:
+				setAttributeType((StatemachineDTOType)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT:
+				setHasEvent((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT:
+				setEvent((StatemachineEvent)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE:
+				setAttributeType((StatemachineDTOType)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT:
+				setHasEvent(HAS_EVENT_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT:
+				setEvent((StatemachineEvent)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return attributeType != null;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT:
+				return hasEvent != HAS_EVENT_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT:
+				return event != 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(" (hasEvent: ");
+		result.append(hasEvent);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlDTOAttributeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOImpl.java
new file mode 100644
index 0000000..8b81531
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlDTOImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.xtext.statemachine.StatemachineControlDTO;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control DTO</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlDTOImpl#getDtos <em>Dtos</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlDTOImpl extends StatemachineBaseImpl implements StatemachineControlDTO {
+	/**
+	 * The cached value of the '{@link #getDtos() <em>Dtos</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtos()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControlDTOAttribute> dtos;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlDTOImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_DTO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControlDTOAttribute> getDtos() {
+		if (dtos == null) {
+			dtos = new EObjectContainmentEList<StatemachineControlDTOAttribute>(StatemachineControlDTOAttribute.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS);
+		}
+		return dtos;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS:
+				return ((InternalEList<?>)getDtos()).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 StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS:
+				return getDtos();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS:
+				getDtos().clear();
+				getDtos().addAll((Collection<? extends StatemachineControlDTOAttribute>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS:
+				getDtos().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO__DTOS:
+				return dtos != null && !dtos.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlDTOImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldAttributeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldAttributeImpl.java
new file mode 100644
index 0000000..a62aea2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldAttributeImpl.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Field Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldAttributeImpl#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlFieldAttributeImpl extends StatemachineBaseImpl implements StatemachineControlFieldAttribute {
+	/**
+	 * The cached value of the '{@link #getAttributeType() <em>Attribute Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineFieldType attributeType;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlFieldAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineFieldType getAttributeType() {
+		return attributeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAttributeType(StatemachineFieldType newAttributeType, NotificationChain msgs) {
+		StatemachineFieldType oldAttributeType = attributeType;
+		attributeType = newAttributeType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE, oldAttributeType, newAttributeType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttributeType(StatemachineFieldType newAttributeType) {
+		if (newAttributeType != attributeType) {
+			NotificationChain msgs = null;
+			if (attributeType != null)
+				msgs = ((InternalEObject)attributeType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE, null, msgs);
+			if (newAttributeType != null)
+				msgs = ((InternalEObject)newAttributeType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE, null, msgs);
+			msgs = basicSetAttributeType(newAttributeType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE, newAttributeType, newAttributeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return basicSetAttributeType(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 StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return getAttributeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE:
+				setAttributeType((StatemachineFieldType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE:
+				setAttributeType((StatemachineFieldType)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE:
+				return attributeType != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlFieldAttributeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldImpl.java
new file mode 100644
index 0000000..b43d636
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldImpl.java
@@ -0,0 +1,198 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.xtext.statemachine.StatemachineControlField;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Field</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl#getFields <em>Fields</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlFieldImpl#getLayouts <em>Layouts</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlFieldImpl extends StatemachineBaseImpl implements StatemachineControlField {
+	/**
+	 * The cached value of the '{@link #getFields() <em>Fields</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFields()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControlFieldAttribute> fields;
+
+	/**
+	 * The cached value of the '{@link #getLayouts() <em>Layouts</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLayouts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControlFieldLayout> layouts;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlFieldImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_FIELD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControlFieldAttribute> getFields() {
+		if (fields == null) {
+			fields = new EObjectContainmentEList<StatemachineControlFieldAttribute>(StatemachineControlFieldAttribute.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS);
+		}
+		return fields;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControlFieldLayout> getLayouts() {
+		if (layouts == null) {
+			layouts = new EObjectContainmentEList<StatemachineControlFieldLayout>(StatemachineControlFieldLayout.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS);
+		}
+		return layouts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS:
+				return ((InternalEList<?>)getFields()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS:
+				return ((InternalEList<?>)getLayouts()).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 StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS:
+				return getFields();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS:
+				return getLayouts();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS:
+				getFields().clear();
+				getFields().addAll((Collection<? extends StatemachineControlFieldAttribute>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS:
+				getLayouts().clear();
+				getLayouts().addAll((Collection<? extends StatemachineControlFieldLayout>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS:
+				getFields().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS:
+				getLayouts().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__FIELDS:
+				return fields != null && !fields.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD__LAYOUTS:
+				return layouts != null && !layouts.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlFieldImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldLayoutImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldLayoutImpl.java
new file mode 100644
index 0000000..6f9d201
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlFieldLayoutImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Field Layout</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlFieldLayoutImpl extends StatemachineBaseImpl implements StatemachineControlFieldLayout {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlFieldLayoutImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_FIELD_LAYOUT;
+	}
+
+} //StatemachineControlFieldLayoutImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlPeripheralImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlPeripheralImpl.java
new file mode 100644
index 0000000..a7f16bf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlPeripheralImpl.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.xtext.statemachine.StatemachineControlPeripheral;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Peripheral</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl#getLineDisplays <em>Line Displays</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl#getPosPrinters <em>Pos Printers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl#getCashDrawers <em>Cash Drawers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlPeripheralImpl#getPaymentTerminals <em>Payment Terminals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlPeripheralImpl extends StatemachineBaseImpl implements StatemachineControlPeripheral {
+	/**
+	 * The cached value of the '{@link #getLineDisplays() <em>Line Displays</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLineDisplays()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachinePeripheralDeviceLineDisplay> lineDisplays;
+
+	/**
+	 * The cached value of the '{@link #getPosPrinters() <em>Pos Printers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPosPrinters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachinePeripheralDevicePOSPrinter> posPrinters;
+
+	/**
+	 * The cached value of the '{@link #getCashDrawers() <em>Cash Drawers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCashDrawers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachinePeripheralDeviceCashDrawer> cashDrawers;
+
+	/**
+	 * The cached value of the '{@link #getPaymentTerminals() <em>Payment Terminals</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPaymentTerminals()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachinePeripheralDevicePT> paymentTerminals;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlPeripheralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_PERIPHERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachinePeripheralDeviceLineDisplay> getLineDisplays() {
+		if (lineDisplays == null) {
+			lineDisplays = new EObjectContainmentEList<StatemachinePeripheralDeviceLineDisplay>(StatemachinePeripheralDeviceLineDisplay.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS);
+		}
+		return lineDisplays;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachinePeripheralDevicePOSPrinter> getPosPrinters() {
+		if (posPrinters == null) {
+			posPrinters = new EObjectContainmentEList<StatemachinePeripheralDevicePOSPrinter>(StatemachinePeripheralDevicePOSPrinter.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS);
+		}
+		return posPrinters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachinePeripheralDeviceCashDrawer> getCashDrawers() {
+		if (cashDrawers == null) {
+			cashDrawers = new EObjectContainmentEList<StatemachinePeripheralDeviceCashDrawer>(StatemachinePeripheralDeviceCashDrawer.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS);
+		}
+		return cashDrawers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachinePeripheralDevicePT> getPaymentTerminals() {
+		if (paymentTerminals == null) {
+			paymentTerminals = new EObjectContainmentEList<StatemachinePeripheralDevicePT>(StatemachinePeripheralDevicePT.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS);
+		}
+		return paymentTerminals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS:
+				return ((InternalEList<?>)getLineDisplays()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS:
+				return ((InternalEList<?>)getPosPrinters()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS:
+				return ((InternalEList<?>)getCashDrawers()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS:
+				return ((InternalEList<?>)getPaymentTerminals()).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 StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS:
+				return getLineDisplays();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS:
+				return getPosPrinters();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS:
+				return getCashDrawers();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS:
+				return getPaymentTerminals();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS:
+				getLineDisplays().clear();
+				getLineDisplays().addAll((Collection<? extends StatemachinePeripheralDeviceLineDisplay>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS:
+				getPosPrinters().clear();
+				getPosPrinters().addAll((Collection<? extends StatemachinePeripheralDevicePOSPrinter>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS:
+				getCashDrawers().clear();
+				getCashDrawers().addAll((Collection<? extends StatemachinePeripheralDeviceCashDrawer>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS:
+				getPaymentTerminals().clear();
+				getPaymentTerminals().addAll((Collection<? extends StatemachinePeripheralDevicePT>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS:
+				getLineDisplays().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS:
+				getPosPrinters().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS:
+				getCashDrawers().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS:
+				getPaymentTerminals().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS:
+				return lineDisplays != null && !lineDisplays.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS:
+				return posPrinters != null && !posPrinters.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS:
+				return cashDrawers != null && !cashDrawers.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS:
+				return paymentTerminals != null && !paymentTerminals.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlPeripheralImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerAttributeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerAttributeImpl.java
new file mode 100644
index 0000000..2d4ea7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerAttributeImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Scheduler Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl#getDelay <em>Delay</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerAttributeImpl#getEvent <em>Event</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlSchedulerAttributeImpl extends StatemachineBaseImpl implements StatemachineControlSchedulerAttribute {
+	/**
+	 * The default value of the '{@link #getDelay() <em>Delay</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDelay()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DELAY_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDelay() <em>Delay</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDelay()
+	 * @generated
+	 * @ordered
+	 */
+	protected int delay = DELAY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getEvent() <em>Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineEvent event;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlSchedulerAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDelay() {
+		return delay;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDelay(int newDelay) {
+		int oldDelay = delay;
+		delay = newDelay;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY, oldDelay, delay));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent getEvent() {
+		if (event != null && event.eIsProxy()) {
+			InternalEObject oldEvent = (InternalEObject)event;
+			event = (StatemachineEvent)eResolveProxy(oldEvent);
+			if (event != oldEvent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT, oldEvent, event));
+			}
+		}
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent basicGetEvent() {
+		return event;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEvent(StatemachineEvent newEvent) {
+		StatemachineEvent oldEvent = event;
+		event = newEvent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT, oldEvent, event));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY:
+				return getDelay();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT:
+				if (resolve) return getEvent();
+				return basicGetEvent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY:
+				setDelay((Integer)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT:
+				setEvent((StatemachineEvent)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY:
+				setDelay(DELAY_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT:
+				setEvent((StatemachineEvent)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY:
+				return delay != DELAY_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT:
+				return event != 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(" (delay: ");
+		result.append(delay);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineControlSchedulerAttributeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerImpl.java
new file mode 100644
index 0000000..060fdce
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineControlSchedulerImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.xtext.statemachine.StatemachineControlScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Control Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineControlSchedulerImpl#getSchedulers <em>Schedulers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineControlSchedulerImpl extends StatemachineBaseImpl implements StatemachineControlScheduler {
+	/**
+	 * The cached value of the '{@link #getSchedulers() <em>Schedulers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSchedulers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControlSchedulerAttribute> schedulers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineControlSchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControlSchedulerAttribute> getSchedulers() {
+		if (schedulers == null) {
+			schedulers = new EObjectContainmentEList<StatemachineControlSchedulerAttribute>(StatemachineControlSchedulerAttribute.class, this, StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS);
+		}
+		return schedulers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS:
+				return ((InternalEList<?>)getSchedulers()).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 StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS:
+				return getSchedulers();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS:
+				getSchedulers().clear();
+				getSchedulers().addAll((Collection<? extends StatemachineControlSchedulerAttribute>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS:
+				getSchedulers().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS:
+				return schedulers != null && !schedulers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineControlSchedulerImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLFactoryImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLFactoryImpl.java
new file mode 100644
index 0000000..b082d66
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLFactoryImpl.java
@@ -0,0 +1,1276 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StatemachineDSLFactoryImpl extends EFactoryImpl implements StatemachineDSLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StatemachineDSLFactory init() {
+		try {
+			StatemachineDSLFactory theStatemachineDSLFactory = (StatemachineDSLFactory)EPackage.Registry.INSTANCE.getEFactory(StatemachineDSLPackage.eNS_URI);
+			if (theStatemachineDSLFactory != null) {
+				return theStatemachineDSLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new StatemachineDSLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDSLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case StatemachineDSLPackage.STATEMACHINE_MODEL: return createStatemachineModel();
+			case StatemachineDSLPackage.STATEMACHINE_LAZY_RESOLVER: return createStatemachineLazyResolver();
+			case StatemachineDSLPackage.STATEMACHINE_BASE: return createStatemachineBase();
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE: return createStatemachinePackage();
+			case StatemachineDSLPackage.STATEMACHINE: return createStatemachine();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON: return createStatemachineControlButton();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD: return createStatemachineControlField();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO: return createStatemachineControlDTO();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER: return createStatemachineControlScheduler();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL: return createStatemachineControlPeripheral();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE: return createStatemachineControlButtonAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD: return createStatemachineControlButtonAttributeEventKeyboard();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY: return createStatemachineControlButtonAttributeEventIdentity();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT: return createStatemachineControlButtonAttributeEventEvent();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE: return createStatemachineControlFieldAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_LAYOUT: return createStatemachineControlFieldLayout();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE: return createStatemachineControlDTOAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY: return createStatemachinePeripheralDeviceLineDisplay();
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER: return createStatemachinePeripheralDevicePOSPrinter();
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER: return createStatemachinePeripheralDeviceCashDrawer();
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_PT: return createStatemachinePeripheralDevicePT();
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE: return createStatemachineControlSchedulerAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_EVENT: return createStatemachineEvent();
+			case StatemachineDSLPackage.STATEMACHINE_STATE: return createStatemachineState();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER: return createStatemachineTrigger();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE: return createStatemachineActionPeripheralBlinkRate();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR: return createStatemachineActionPeripheralClear();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW: return createStatemachineActionPeripheralCreateWindow();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE: return createStatemachineActionPeripheralCursorType();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW: return createStatemachineActionPeripheralDestroyWindow();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS: return createStatemachineActionPeripheralDeviceBrightness();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP: return createStatemachineActionPeripheralDisplayBitmap();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT: return createStatemachineActionPeripheralDisplayText();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT: return createStatemachineActionPeripheralDisplayTextAt();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT: return createStatemachineActionPeripheralInterCharacterWait();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT: return createStatemachineActionPeripheralMarqueeFormat();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT: return createStatemachineActionPeripheralMarqueeRepeatWait();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE: return createStatemachineActionPeripheralMarqueeType();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT: return createStatemachineActionPeripheralMarqueeUnitWait();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL: return createStatemachineActionPeripheralScroll();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER: return createStatemachineActionPeripheralOpenDrawer();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE: return createStatemachineActionPeripheralPrintBarcode();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP: return createStatemachineActionPeripheralPrintBitmap();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT: return createStatemachineActionPeripheralPrintCut();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP: return createStatemachineActionPeripheralPrintRegisterBitmap();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL: return createStatemachineActionPeripheralPrintNormal();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN: return createStatemachineActionPeripheralPTOpen();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE: return createStatemachineActionPeripheralPTClose();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL: return createStatemachineActionPeripheralPTReversal();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE: return createStatemachineActionPeripheralPTAcknowledge();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION: return createStatemachineActionPeripheralPTRegistration();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION: return createStatemachineActionPeripheralPTAuthorization();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE: return createStatemachineActionPeripheralPTResponse();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT: return createStatemachineActionPeripheralPrintReport();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING: return createStatemachineActionFieldSourceString();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER: return createStatemachineActionFieldSourceNumber();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE: return createStatemachineActionFieldSourceEvaluate();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE: return createStatemachineActionFieldSourceTranslate();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE: return createStatemachineActionFieldSourceDtoAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVENT: return createStatemachineActionFieldSourceEvent();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION: return createStatemachineActionConditionalTransition();
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER: return createStatemachineOperationParameter();
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION: return createStatemachineOperation();
+			case StatemachineDSLPackage.STATEMACHINE_GUARD: return createStatemachineGuard();
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION: return createStatemachineFunction();
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE: return createStatemachineStorageRetrieve();
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE: return createStatemachineStorage();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION: return createStatemachineActionFieldConcatenation();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET: return createStatemachineActionFieldSet();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE: return createStatemachineActionFieldKeystroke();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR: return createStatemachineActionFieldClear();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET: return createStatemachineActionFieldGet();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE: return createStatemachineActionFieldRemove();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE: return createStatemachineActionItemVisible();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE: return createStatemachineActionItemInvisible();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION: return createStatemachineActionButtonCaption();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE: return createStatemachineActionButtonImage();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND: return createStatemachineActionDTOFind();
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER: return createStatemachineActionScheduler();
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE: return createStatemachineDTOType();
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE: return createStatemachineFieldType();
+			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 StatemachineDSLPackage.STATEMACHINE_INTERNAL_TYPE:
+				return createStatemachineInternalTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_EVENT_TYPE:
+				return createStatemachineControlButtonEventTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_EVALUATION_TYPE:
+				return createStatemachineEvaluationTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_USER_MESSAGE_TYPE:
+				return createStatemachineUserMessageTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_CURSOR_TYPE:
+				return createStatemachineLineDisplayCursorTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_MARQUEE_TYPE:
+				return createStatemachineLineDisplayMarqueeTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_MARQUEE_FORMAT:
+				return createStatemachineLineDisplayMarqueeFormatFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_TEXT_TYPE:
+				return createStatemachineLineDisplayTextTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_SCROLL_TEXT_TYPE:
+				return createStatemachineLineDisplayScrollTextTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.STATEMACHINE_POS_PRINTER_BARCODE_TYPE:
+				return createStatemachinePOSPrinterBarcodeTypeFromString(eDataType, initialValue);
+			case StatemachineDSLPackage.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 StatemachineDSLPackage.STATEMACHINE_INTERNAL_TYPE:
+				return convertStatemachineInternalTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_EVENT_TYPE:
+				return convertStatemachineControlButtonEventTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_EVALUATION_TYPE:
+				return convertStatemachineEvaluationTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_USER_MESSAGE_TYPE:
+				return convertStatemachineUserMessageTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_CURSOR_TYPE:
+				return convertStatemachineLineDisplayCursorTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_MARQUEE_TYPE:
+				return convertStatemachineLineDisplayMarqueeTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_MARQUEE_FORMAT:
+				return convertStatemachineLineDisplayMarqueeFormatToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_TEXT_TYPE:
+				return convertStatemachineLineDisplayTextTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_LINE_DISPLAY_SCROLL_TEXT_TYPE:
+				return convertStatemachineLineDisplayScrollTextTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.STATEMACHINE_POS_PRINTER_BARCODE_TYPE:
+				return convertStatemachinePOSPrinterBarcodeTypeToString(eDataType, instanceValue);
+			case StatemachineDSLPackage.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 StatemachineModel createStatemachineModel() {
+		StatemachineModelImpl statemachineModel = new StatemachineModelImpl();
+		return statemachineModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLazyResolver createStatemachineLazyResolver() {
+		StatemachineLazyResolverImpl statemachineLazyResolver = new StatemachineLazyResolverImpl();
+		return statemachineLazyResolver;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineBase createStatemachineBase() {
+		StatemachineBaseImpl statemachineBase = new StatemachineBaseImpl();
+		return statemachineBase;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePackage createStatemachinePackage() {
+		StatemachinePackageImpl statemachinePackage = new StatemachinePackageImpl();
+		return statemachinePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Statemachine createStatemachine() {
+		StatemachineImpl statemachine = new StatemachineImpl();
+		return statemachine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButton createStatemachineControlButton() {
+		StatemachineControlButtonImpl statemachineControlButton = new StatemachineControlButtonImpl();
+		return statemachineControlButton;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlField createStatemachineControlField() {
+		StatemachineControlFieldImpl statemachineControlField = new StatemachineControlFieldImpl();
+		return statemachineControlField;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTO createStatemachineControlDTO() {
+		StatemachineControlDTOImpl statemachineControlDTO = new StatemachineControlDTOImpl();
+		return statemachineControlDTO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlScheduler createStatemachineControlScheduler() {
+		StatemachineControlSchedulerImpl statemachineControlScheduler = new StatemachineControlSchedulerImpl();
+		return statemachineControlScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlPeripheral createStatemachineControlPeripheral() {
+		StatemachineControlPeripheralImpl statemachineControlPeripheral = new StatemachineControlPeripheralImpl();
+		return statemachineControlPeripheral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttribute createStatemachineControlButtonAttribute() {
+		StatemachineControlButtonAttributeImpl statemachineControlButtonAttribute = new StatemachineControlButtonAttributeImpl();
+		return statemachineControlButtonAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttributeEventKeyboard createStatemachineControlButtonAttributeEventKeyboard() {
+		StatemachineControlButtonAttributeEventKeyboardImpl statemachineControlButtonAttributeEventKeyboard = new StatemachineControlButtonAttributeEventKeyboardImpl();
+		return statemachineControlButtonAttributeEventKeyboard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttributeEventIdentity createStatemachineControlButtonAttributeEventIdentity() {
+		StatemachineControlButtonAttributeEventIdentityImpl statemachineControlButtonAttributeEventIdentity = new StatemachineControlButtonAttributeEventIdentityImpl();
+		return statemachineControlButtonAttributeEventIdentity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonAttributeEventEvent createStatemachineControlButtonAttributeEventEvent() {
+		StatemachineControlButtonAttributeEventEventImpl statemachineControlButtonAttributeEventEvent = new StatemachineControlButtonAttributeEventEventImpl();
+		return statemachineControlButtonAttributeEventEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute createStatemachineControlFieldAttribute() {
+		StatemachineControlFieldAttributeImpl statemachineControlFieldAttribute = new StatemachineControlFieldAttributeImpl();
+		return statemachineControlFieldAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldLayout createStatemachineControlFieldLayout() {
+		StatemachineControlFieldLayoutImpl statemachineControlFieldLayout = new StatemachineControlFieldLayoutImpl();
+		return statemachineControlFieldLayout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlDTOAttribute createStatemachineControlDTOAttribute() {
+		StatemachineControlDTOAttributeImpl statemachineControlDTOAttribute = new StatemachineControlDTOAttributeImpl();
+		return statemachineControlDTOAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceLineDisplay createStatemachinePeripheralDeviceLineDisplay() {
+		StatemachinePeripheralDeviceLineDisplayImpl statemachinePeripheralDeviceLineDisplay = new StatemachinePeripheralDeviceLineDisplayImpl();
+		return statemachinePeripheralDeviceLineDisplay;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePOSPrinter createStatemachinePeripheralDevicePOSPrinter() {
+		StatemachinePeripheralDevicePOSPrinterImpl statemachinePeripheralDevicePOSPrinter = new StatemachinePeripheralDevicePOSPrinterImpl();
+		return statemachinePeripheralDevicePOSPrinter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDeviceCashDrawer createStatemachinePeripheralDeviceCashDrawer() {
+		StatemachinePeripheralDeviceCashDrawerImpl statemachinePeripheralDeviceCashDrawer = new StatemachinePeripheralDeviceCashDrawerImpl();
+		return statemachinePeripheralDeviceCashDrawer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePeripheralDevicePT createStatemachinePeripheralDevicePT() {
+		StatemachinePeripheralDevicePTImpl statemachinePeripheralDevicePT = new StatemachinePeripheralDevicePTImpl();
+		return statemachinePeripheralDevicePT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlSchedulerAttribute createStatemachineControlSchedulerAttribute() {
+		StatemachineControlSchedulerAttributeImpl statemachineControlSchedulerAttribute = new StatemachineControlSchedulerAttributeImpl();
+		return statemachineControlSchedulerAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent createStatemachineEvent() {
+		StatemachineEventImpl statemachineEvent = new StatemachineEventImpl();
+		return statemachineEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState createStatemachineState() {
+		StatemachineStateImpl statemachineState = new StatemachineStateImpl();
+		return statemachineState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineTrigger createStatemachineTrigger() {
+		StatemachineTriggerImpl statemachineTrigger = new StatemachineTriggerImpl();
+		return statemachineTrigger;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralBlinkRate createStatemachineActionPeripheralBlinkRate() {
+		StatemachineActionPeripheralBlinkRateImpl statemachineActionPeripheralBlinkRate = new StatemachineActionPeripheralBlinkRateImpl();
+		return statemachineActionPeripheralBlinkRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralClear createStatemachineActionPeripheralClear() {
+		StatemachineActionPeripheralClearImpl statemachineActionPeripheralClear = new StatemachineActionPeripheralClearImpl();
+		return statemachineActionPeripheralClear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralCreateWindow createStatemachineActionPeripheralCreateWindow() {
+		StatemachineActionPeripheralCreateWindowImpl statemachineActionPeripheralCreateWindow = new StatemachineActionPeripheralCreateWindowImpl();
+		return statemachineActionPeripheralCreateWindow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralCursorType createStatemachineActionPeripheralCursorType() {
+		StatemachineActionPeripheralCursorTypeImpl statemachineActionPeripheralCursorType = new StatemachineActionPeripheralCursorTypeImpl();
+		return statemachineActionPeripheralCursorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralDestroyWindow createStatemachineActionPeripheralDestroyWindow() {
+		StatemachineActionPeripheralDestroyWindowImpl statemachineActionPeripheralDestroyWindow = new StatemachineActionPeripheralDestroyWindowImpl();
+		return statemachineActionPeripheralDestroyWindow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralDeviceBrightness createStatemachineActionPeripheralDeviceBrightness() {
+		StatemachineActionPeripheralDeviceBrightnessImpl statemachineActionPeripheralDeviceBrightness = new StatemachineActionPeripheralDeviceBrightnessImpl();
+		return statemachineActionPeripheralDeviceBrightness;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralDisplayBitmap createStatemachineActionPeripheralDisplayBitmap() {
+		StatemachineActionPeripheralDisplayBitmapImpl statemachineActionPeripheralDisplayBitmap = new StatemachineActionPeripheralDisplayBitmapImpl();
+		return statemachineActionPeripheralDisplayBitmap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralDisplayText createStatemachineActionPeripheralDisplayText() {
+		StatemachineActionPeripheralDisplayTextImpl statemachineActionPeripheralDisplayText = new StatemachineActionPeripheralDisplayTextImpl();
+		return statemachineActionPeripheralDisplayText;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralDisplayTextAt createStatemachineActionPeripheralDisplayTextAt() {
+		StatemachineActionPeripheralDisplayTextAtImpl statemachineActionPeripheralDisplayTextAt = new StatemachineActionPeripheralDisplayTextAtImpl();
+		return statemachineActionPeripheralDisplayTextAt;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralInterCharacterWait createStatemachineActionPeripheralInterCharacterWait() {
+		StatemachineActionPeripheralInterCharacterWaitImpl statemachineActionPeripheralInterCharacterWait = new StatemachineActionPeripheralInterCharacterWaitImpl();
+		return statemachineActionPeripheralInterCharacterWait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralMarqueeFormat createStatemachineActionPeripheralMarqueeFormat() {
+		StatemachineActionPeripheralMarqueeFormatImpl statemachineActionPeripheralMarqueeFormat = new StatemachineActionPeripheralMarqueeFormatImpl();
+		return statemachineActionPeripheralMarqueeFormat;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralMarqueeRepeatWait createStatemachineActionPeripheralMarqueeRepeatWait() {
+		StatemachineActionPeripheralMarqueeRepeatWaitImpl statemachineActionPeripheralMarqueeRepeatWait = new StatemachineActionPeripheralMarqueeRepeatWaitImpl();
+		return statemachineActionPeripheralMarqueeRepeatWait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralMarqueeType createStatemachineActionPeripheralMarqueeType() {
+		StatemachineActionPeripheralMarqueeTypeImpl statemachineActionPeripheralMarqueeType = new StatemachineActionPeripheralMarqueeTypeImpl();
+		return statemachineActionPeripheralMarqueeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralMarqueeUnitWait createStatemachineActionPeripheralMarqueeUnitWait() {
+		StatemachineActionPeripheralMarqueeUnitWaitImpl statemachineActionPeripheralMarqueeUnitWait = new StatemachineActionPeripheralMarqueeUnitWaitImpl();
+		return statemachineActionPeripheralMarqueeUnitWait;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralScroll createStatemachineActionPeripheralScroll() {
+		StatemachineActionPeripheralScrollImpl statemachineActionPeripheralScroll = new StatemachineActionPeripheralScrollImpl();
+		return statemachineActionPeripheralScroll;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralOpenDrawer createStatemachineActionPeripheralOpenDrawer() {
+		StatemachineActionPeripheralOpenDrawerImpl statemachineActionPeripheralOpenDrawer = new StatemachineActionPeripheralOpenDrawerImpl();
+		return statemachineActionPeripheralOpenDrawer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintBarcode createStatemachineActionPeripheralPrintBarcode() {
+		StatemachineActionPeripheralPrintBarcodeImpl statemachineActionPeripheralPrintBarcode = new StatemachineActionPeripheralPrintBarcodeImpl();
+		return statemachineActionPeripheralPrintBarcode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintBitmap createStatemachineActionPeripheralPrintBitmap() {
+		StatemachineActionPeripheralPrintBitmapImpl statemachineActionPeripheralPrintBitmap = new StatemachineActionPeripheralPrintBitmapImpl();
+		return statemachineActionPeripheralPrintBitmap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintCut createStatemachineActionPeripheralPrintCut() {
+		StatemachineActionPeripheralPrintCutImpl statemachineActionPeripheralPrintCut = new StatemachineActionPeripheralPrintCutImpl();
+		return statemachineActionPeripheralPrintCut;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintRegisterBitmap createStatemachineActionPeripheralPrintRegisterBitmap() {
+		StatemachineActionPeripheralPrintRegisterBitmapImpl statemachineActionPeripheralPrintRegisterBitmap = new StatemachineActionPeripheralPrintRegisterBitmapImpl();
+		return statemachineActionPeripheralPrintRegisterBitmap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintNormal createStatemachineActionPeripheralPrintNormal() {
+		StatemachineActionPeripheralPrintNormalImpl statemachineActionPeripheralPrintNormal = new StatemachineActionPeripheralPrintNormalImpl();
+		return statemachineActionPeripheralPrintNormal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTOpen createStatemachineActionPeripheralPTOpen() {
+		StatemachineActionPeripheralPTOpenImpl statemachineActionPeripheralPTOpen = new StatemachineActionPeripheralPTOpenImpl();
+		return statemachineActionPeripheralPTOpen;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTClose createStatemachineActionPeripheralPTClose() {
+		StatemachineActionPeripheralPTCloseImpl statemachineActionPeripheralPTClose = new StatemachineActionPeripheralPTCloseImpl();
+		return statemachineActionPeripheralPTClose;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTReversal createStatemachineActionPeripheralPTReversal() {
+		StatemachineActionPeripheralPTReversalImpl statemachineActionPeripheralPTReversal = new StatemachineActionPeripheralPTReversalImpl();
+		return statemachineActionPeripheralPTReversal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTAcknowledge createStatemachineActionPeripheralPTAcknowledge() {
+		StatemachineActionPeripheralPTAcknowledgeImpl statemachineActionPeripheralPTAcknowledge = new StatemachineActionPeripheralPTAcknowledgeImpl();
+		return statemachineActionPeripheralPTAcknowledge;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTRegistration createStatemachineActionPeripheralPTRegistration() {
+		StatemachineActionPeripheralPTRegistrationImpl statemachineActionPeripheralPTRegistration = new StatemachineActionPeripheralPTRegistrationImpl();
+		return statemachineActionPeripheralPTRegistration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTAuthorization createStatemachineActionPeripheralPTAuthorization() {
+		StatemachineActionPeripheralPTAuthorizationImpl statemachineActionPeripheralPTAuthorization = new StatemachineActionPeripheralPTAuthorizationImpl();
+		return statemachineActionPeripheralPTAuthorization;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPTResponse createStatemachineActionPeripheralPTResponse() {
+		StatemachineActionPeripheralPTResponseImpl statemachineActionPeripheralPTResponse = new StatemachineActionPeripheralPTResponseImpl();
+		return statemachineActionPeripheralPTResponse;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionPeripheralPrintReport createStatemachineActionPeripheralPrintReport() {
+		StatemachineActionPeripheralPrintReportImpl statemachineActionPeripheralPrintReport = new StatemachineActionPeripheralPrintReportImpl();
+		return statemachineActionPeripheralPrintReport;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceString createStatemachineActionFieldSourceString() {
+		StatemachineActionFieldSourceStringImpl statemachineActionFieldSourceString = new StatemachineActionFieldSourceStringImpl();
+		return statemachineActionFieldSourceString;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceNumber createStatemachineActionFieldSourceNumber() {
+		StatemachineActionFieldSourceNumberImpl statemachineActionFieldSourceNumber = new StatemachineActionFieldSourceNumberImpl();
+		return statemachineActionFieldSourceNumber;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceEvaluate createStatemachineActionFieldSourceEvaluate() {
+		StatemachineActionFieldSourceEvaluateImpl statemachineActionFieldSourceEvaluate = new StatemachineActionFieldSourceEvaluateImpl();
+		return statemachineActionFieldSourceEvaluate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceTranslate createStatemachineActionFieldSourceTranslate() {
+		StatemachineActionFieldSourceTranslateImpl statemachineActionFieldSourceTranslate = new StatemachineActionFieldSourceTranslateImpl();
+		return statemachineActionFieldSourceTranslate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceDtoAttribute createStatemachineActionFieldSourceDtoAttribute() {
+		StatemachineActionFieldSourceDtoAttributeImpl statemachineActionFieldSourceDtoAttribute = new StatemachineActionFieldSourceDtoAttributeImpl();
+		return statemachineActionFieldSourceDtoAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSourceEvent createStatemachineActionFieldSourceEvent() {
+		StatemachineActionFieldSourceEventImpl statemachineActionFieldSourceEvent = new StatemachineActionFieldSourceEventImpl();
+		return statemachineActionFieldSourceEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionConditionalTransition createStatemachineActionConditionalTransition() {
+		StatemachineActionConditionalTransitionImpl statemachineActionConditionalTransition = new StatemachineActionConditionalTransitionImpl();
+		return statemachineActionConditionalTransition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperationParameter createStatemachineOperationParameter() {
+		StatemachineOperationParameterImpl statemachineOperationParameter = new StatemachineOperationParameterImpl();
+		return statemachineOperationParameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperation createStatemachineOperation() {
+		StatemachineOperationImpl statemachineOperation = new StatemachineOperationImpl();
+		return statemachineOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineGuard createStatemachineGuard() {
+		StatemachineGuardImpl statemachineGuard = new StatemachineGuardImpl();
+		return statemachineGuard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineFunction createStatemachineFunction() {
+		StatemachineFunctionImpl statemachineFunction = new StatemachineFunctionImpl();
+		return statemachineFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineStorageRetrieve createStatemachineStorageRetrieve() {
+		StatemachineStorageRetrieveImpl statemachineStorageRetrieve = new StatemachineStorageRetrieveImpl();
+		return statemachineStorageRetrieve;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineStorage createStatemachineStorage() {
+		StatemachineStorageImpl statemachineStorage = new StatemachineStorageImpl();
+		return statemachineStorage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation createStatemachineActionFieldConcatenation() {
+		StatemachineActionFieldConcatenationImpl statemachineActionFieldConcatenation = new StatemachineActionFieldConcatenationImpl();
+		return statemachineActionFieldConcatenation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldSet createStatemachineActionFieldSet() {
+		StatemachineActionFieldSetImpl statemachineActionFieldSet = new StatemachineActionFieldSetImpl();
+		return statemachineActionFieldSet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldKeystroke createStatemachineActionFieldKeystroke() {
+		StatemachineActionFieldKeystrokeImpl statemachineActionFieldKeystroke = new StatemachineActionFieldKeystrokeImpl();
+		return statemachineActionFieldKeystroke;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldClear createStatemachineActionFieldClear() {
+		StatemachineActionFieldClearImpl statemachineActionFieldClear = new StatemachineActionFieldClearImpl();
+		return statemachineActionFieldClear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldGet createStatemachineActionFieldGet() {
+		StatemachineActionFieldGetImpl statemachineActionFieldGet = new StatemachineActionFieldGetImpl();
+		return statemachineActionFieldGet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldRemove createStatemachineActionFieldRemove() {
+		StatemachineActionFieldRemoveImpl statemachineActionFieldRemove = new StatemachineActionFieldRemoveImpl();
+		return statemachineActionFieldRemove;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionItemVisible createStatemachineActionItemVisible() {
+		StatemachineActionItemVisibleImpl statemachineActionItemVisible = new StatemachineActionItemVisibleImpl();
+		return statemachineActionItemVisible;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionItemInvisible createStatemachineActionItemInvisible() {
+		StatemachineActionItemInvisibleImpl statemachineActionItemInvisible = new StatemachineActionItemInvisibleImpl();
+		return statemachineActionItemInvisible;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionButtonCaption createStatemachineActionButtonCaption() {
+		StatemachineActionButtonCaptionImpl statemachineActionButtonCaption = new StatemachineActionButtonCaptionImpl();
+		return statemachineActionButtonCaption;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionButtonImage createStatemachineActionButtonImage() {
+		StatemachineActionButtonImageImpl statemachineActionButtonImage = new StatemachineActionButtonImageImpl();
+		return statemachineActionButtonImage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionDTOFind createStatemachineActionDTOFind() {
+		StatemachineActionDTOFindImpl statemachineActionDTOFind = new StatemachineActionDTOFindImpl();
+		return statemachineActionDTOFind;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionScheduler createStatemachineActionScheduler() {
+		StatemachineActionSchedulerImpl statemachineActionScheduler = new StatemachineActionSchedulerImpl();
+		return statemachineActionScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDTOType createStatemachineDTOType() {
+		StatemachineDTOTypeImpl statemachineDTOType = new StatemachineDTOTypeImpl();
+		return statemachineDTOType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineFieldType createStatemachineFieldType() {
+		StatemachineFieldTypeImpl statemachineFieldType = new StatemachineFieldTypeImpl();
+		return statemachineFieldType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineInternalType createStatemachineInternalTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineInternalType result = StatemachineInternalType.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 convertStatemachineInternalTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlButtonEventType createStatemachineControlButtonEventTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineControlButtonEventType result = StatemachineControlButtonEventType.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 convertStatemachineControlButtonEventTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvaluationType createStatemachineEvaluationTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineEvaluationType result = StatemachineEvaluationType.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 convertStatemachineEvaluationTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineUserMessageType createStatemachineUserMessageTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineUserMessageType result = StatemachineUserMessageType.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 convertStatemachineUserMessageTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayCursorType createStatemachineLineDisplayCursorTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineLineDisplayCursorType result = StatemachineLineDisplayCursorType.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 convertStatemachineLineDisplayCursorTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayMarqueeType createStatemachineLineDisplayMarqueeTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineLineDisplayMarqueeType result = StatemachineLineDisplayMarqueeType.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 convertStatemachineLineDisplayMarqueeTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayMarqueeFormat createStatemachineLineDisplayMarqueeFormatFromString(EDataType eDataType, String initialValue) {
+		StatemachineLineDisplayMarqueeFormat result = StatemachineLineDisplayMarqueeFormat.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 convertStatemachineLineDisplayMarqueeFormatToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayTextType createStatemachineLineDisplayTextTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineLineDisplayTextType result = StatemachineLineDisplayTextType.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 convertStatemachineLineDisplayTextTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineLineDisplayScrollTextType createStatemachineLineDisplayScrollTextTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachineLineDisplayScrollTextType result = StatemachineLineDisplayScrollTextType.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 convertStatemachineLineDisplayScrollTextTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachinePOSPrinterBarcodeType createStatemachinePOSPrinterBarcodeTypeFromString(EDataType eDataType, String initialValue) {
+		StatemachinePOSPrinterBarcodeType result = StatemachinePOSPrinterBarcodeType.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 convertStatemachinePOSPrinterBarcodeTypeToString(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 StatemachineDSLPackage getStatemachineDSLPackage() {
+		return (StatemachineDSLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static StatemachineDSLPackage getPackage() {
+		return StatemachineDSLPackage.eINSTANCE;
+	}
+
+} //StatemachineDSLFactoryImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLPackageImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLPackageImpl.java
new file mode 100644
index 0000000..485f6a1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDSLPackageImpl.java
@@ -0,0 +1,4211 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+
+import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
+
+import org.eclipse.osbp.xtext.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineAction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineBase;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControl;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonEventType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLFactory;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFunction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineModel;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+import org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StatemachineDSLPackageImpl extends EPackageImpl implements StatemachineDSLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineLazyResolverEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineBaseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlFieldEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlDTOEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlSchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlPeripheralEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonAttributeEventEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonAttributeEventKeyboardEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonAttributeEventIdentityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlButtonAttributeEventEventEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlVisibilityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlFieldAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlFieldLayoutEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlDTOAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePeripheralDeviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePeripheralDeviceLineDisplayEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePeripheralDevicePOSPrinterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePeripheralDeviceCashDrawerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachinePeripheralDevicePTEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineControlSchedulerAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineEventEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineStateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineTriggerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralBlinkRateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralClearEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralCreateWindowEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralCursorTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralDestroyWindowEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralDeviceBrightnessEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralDisplayBitmapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralDisplayTextEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralDisplayTextAtEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralInterCharacterWaitEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralMarqueeFormatEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralMarqueeRepeatWaitEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralMarqueeTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralMarqueeUnitWaitEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralScrollEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralOpenDrawerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintBarcodeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintBitmapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintCutEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintRegisterBitmapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintNormalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTOpenEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTCloseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTReversalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTAcknowledgeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTRegistrationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTAuthorizationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPTResponseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionPeripheralPrintReportEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceStringEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceNumberEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceEvaluateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceTranslateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceDtoAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSourceEventEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionConditionalTransitionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineOperationParameterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineGuardEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineStorageRetrieveEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineStorageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldConcatenationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldSetEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldKeystrokeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldClearEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldGetEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionFieldRemoveEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionItemVisibleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionItemInvisibleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionButtonCaptionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionButtonImageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionDTOFindEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineActionSchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineDTOTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass statemachineFieldTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineInternalTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineControlButtonEventTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineEvaluationTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineUserMessageTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineLineDisplayCursorTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineLineDisplayMarqueeTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineLineDisplayMarqueeFormatEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineLineDisplayTextTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachineLineDisplayScrollTextTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum statemachinePOSPrinterBarcodeTypeEEnum = 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.statemachine.StatemachineDSLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private StatemachineDSLPackageImpl() {
+		super(eNS_URI, StatemachineDSLFactory.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 StatemachineDSLPackage#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 StatemachineDSLPackage init() {
+		if (isInited) return (StatemachineDSLPackage)EPackage.Registry.INSTANCE.getEPackage(StatemachineDSLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		StatemachineDSLPackageImpl theStatemachineDSLPackage = (StatemachineDSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof StatemachineDSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new StatemachineDSLPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		ReportDSLPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theStatemachineDSLPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theStatemachineDSLPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theStatemachineDSLPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(StatemachineDSLPackage.eNS_URI, theStatemachineDSLPackage);
+		return theStatemachineDSLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineModel() {
+		return statemachineModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineModel_Packages() {
+		return (EReference)statemachineModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineLazyResolver() {
+		return statemachineLazyResolverEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getStatemachineLazyResolver__EResolveProxy__InternalEObject() {
+		return statemachineLazyResolverEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineBase() {
+		return statemachineBaseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineBase_Name() {
+		return (EAttribute)statemachineBaseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePackage() {
+		return statemachinePackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachinePackage_Statemachines() {
+		return (EReference)statemachinePackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachine() {
+		return statemachineEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachine_Description() {
+		return (EAttribute)statemachineEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachine_DescriptionValue() {
+		return (EAttribute)statemachineEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_FunctionGroup() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_InitialEvent() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_InitialState() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_Events() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_Controls() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachine_States() {
+		return (EReference)statemachineEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControl() {
+		return statemachineControlEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButton() {
+		return statemachineControlButtonEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlButton_EventType() {
+		return (EAttribute)statemachineControlButtonEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlButton_Buttons() {
+		return (EReference)statemachineControlButtonEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlField() {
+		return statemachineControlFieldEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlField_Fields() {
+		return (EReference)statemachineControlFieldEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlField_Layouts() {
+		return (EReference)statemachineControlFieldEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlDTO() {
+		return statemachineControlDTOEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlDTO_Dtos() {
+		return (EReference)statemachineControlDTOEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlScheduler() {
+		return statemachineControlSchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlScheduler_Schedulers() {
+		return (EReference)statemachineControlSchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlPeripheral() {
+		return statemachineControlPeripheralEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlPeripheral_LineDisplays() {
+		return (EReference)statemachineControlPeripheralEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlPeripheral_PosPrinters() {
+		return (EReference)statemachineControlPeripheralEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlPeripheral_CashDrawers() {
+		return (EReference)statemachineControlPeripheralEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlPeripheral_PaymentTerminals() {
+		return (EReference)statemachineControlPeripheralEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButtonAttribute() {
+		return statemachineControlButtonAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlButtonAttribute_HasImage() {
+		return (EAttribute)statemachineControlButtonAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlButtonAttribute_Image() {
+		return (EAttribute)statemachineControlButtonAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlButtonAttribute_Event() {
+		return (EReference)statemachineControlButtonAttributeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButtonAttributeEvent() {
+		return statemachineControlButtonAttributeEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButtonAttributeEventKeyboard() {
+		return statemachineControlButtonAttributeEventKeyboardEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlButtonAttributeEventKeyboard_Keystroke() {
+		return (EAttribute)statemachineControlButtonAttributeEventKeyboardEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButtonAttributeEventIdentity() {
+		return statemachineControlButtonAttributeEventIdentityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlButtonAttributeEventIdentity_Identity() {
+		return (EAttribute)statemachineControlButtonAttributeEventIdentityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlButtonAttributeEventEvent() {
+		return statemachineControlButtonAttributeEventEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlButtonAttributeEventEvent_Event() {
+		return (EReference)statemachineControlButtonAttributeEventEventEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlVisibility() {
+		return statemachineControlVisibilityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlFieldAttribute() {
+		return statemachineControlFieldAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlFieldAttribute_AttributeType() {
+		return (EReference)statemachineControlFieldAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlFieldLayout() {
+		return statemachineControlFieldLayoutEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlDTOAttribute() {
+		return statemachineControlDTOAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlDTOAttribute_AttributeType() {
+		return (EReference)statemachineControlDTOAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlDTOAttribute_HasEvent() {
+		return (EAttribute)statemachineControlDTOAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlDTOAttribute_Event() {
+		return (EReference)statemachineControlDTOAttributeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePeripheralDevice() {
+		return statemachinePeripheralDeviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePeripheralDeviceLineDisplay() {
+		return statemachinePeripheralDeviceLineDisplayEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePeripheralDevicePOSPrinter() {
+		return statemachinePeripheralDevicePOSPrinterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePeripheralDeviceCashDrawer() {
+		return statemachinePeripheralDeviceCashDrawerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachinePeripheralDevicePT() {
+		return statemachinePeripheralDevicePTEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineControlSchedulerAttribute() {
+		return statemachineControlSchedulerAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineControlSchedulerAttribute_Delay() {
+		return (EAttribute)statemachineControlSchedulerAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineControlSchedulerAttribute_Event() {
+		return (EReference)statemachineControlSchedulerAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineEvent() {
+		return statemachineEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineState() {
+		return statemachineStateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineState_Triggers() {
+		return (EReference)statemachineStateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineState_Identity() {
+		return (EReference)statemachineStateEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineState_Keystroke() {
+		return (EReference)statemachineStateEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineState_HasKeyOperation() {
+		return (EAttribute)statemachineStateEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineState_KeyOperation() {
+		return (EReference)statemachineStateEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineTrigger() {
+		return statemachineTriggerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineTrigger_HasTransition() {
+		return (EAttribute)statemachineTriggerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineTrigger_Transition() {
+		return (EReference)statemachineTriggerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineTrigger_Triggers() {
+		return (EReference)statemachineTriggerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineTrigger_Guards() {
+		return (EReference)statemachineTriggerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineTrigger_Actions() {
+		return (EReference)statemachineTriggerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineAction() {
+		return statemachineActionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralBlinkRate() {
+		return statemachineActionPeripheralBlinkRateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralBlinkRate_Device() {
+		return (EReference)statemachineActionPeripheralBlinkRateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralBlinkRate_BlinkRate() {
+		return (EAttribute)statemachineActionPeripheralBlinkRateEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralClear() {
+		return statemachineActionPeripheralClearEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralClear_Device() {
+		return (EReference)statemachineActionPeripheralClearEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralCreateWindow() {
+		return statemachineActionPeripheralCreateWindowEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralCreateWindow_Device() {
+		return (EReference)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_ViewportRow() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_ViewportColumn() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_ViewportHeight() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_ViewportWidth() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_WindowHeight() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCreateWindow_WindowWidth() {
+		return (EAttribute)statemachineActionPeripheralCreateWindowEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralCursorType() {
+		return statemachineActionPeripheralCursorTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralCursorType_Device() {
+		return (EReference)statemachineActionPeripheralCursorTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralCursorType_CursorType() {
+		return (EAttribute)statemachineActionPeripheralCursorTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralDestroyWindow() {
+		return statemachineActionPeripheralDestroyWindowEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDestroyWindow_Device() {
+		return (EReference)statemachineActionPeripheralDestroyWindowEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralDeviceBrightness() {
+		return statemachineActionPeripheralDeviceBrightnessEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDeviceBrightness_Device() {
+		return (EReference)statemachineActionPeripheralDeviceBrightnessEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDeviceBrightness_Brightness() {
+		return (EAttribute)statemachineActionPeripheralDeviceBrightnessEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralDisplayBitmap() {
+		return statemachineActionPeripheralDisplayBitmapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDisplayBitmap_Device() {
+		return (EReference)statemachineActionPeripheralDisplayBitmapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayBitmap_BitmapId() {
+		return (EAttribute)statemachineActionPeripheralDisplayBitmapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralDisplayText() {
+		return statemachineActionPeripheralDisplayTextEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDisplayText_Device() {
+		return (EReference)statemachineActionPeripheralDisplayTextEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDisplayText_Text() {
+		return (EReference)statemachineActionPeripheralDisplayTextEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayText_HasType() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayText_TextType() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralDisplayTextAt() {
+		return statemachineActionPeripheralDisplayTextAtEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDisplayTextAt_Device() {
+		return (EReference)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayTextAt_Row() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayTextAt_Column() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralDisplayTextAt_Text() {
+		return (EReference)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayTextAt_HasType() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralDisplayTextAt_TextType() {
+		return (EAttribute)statemachineActionPeripheralDisplayTextAtEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralInterCharacterWait() {
+		return statemachineActionPeripheralInterCharacterWaitEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralInterCharacterWait_Device() {
+		return (EReference)statemachineActionPeripheralInterCharacterWaitEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralInterCharacterWait_Wait() {
+		return (EAttribute)statemachineActionPeripheralInterCharacterWaitEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralMarqueeFormat() {
+		return statemachineActionPeripheralMarqueeFormatEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralMarqueeFormat_Device() {
+		return (EReference)statemachineActionPeripheralMarqueeFormatEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralMarqueeFormat_Format() {
+		return (EAttribute)statemachineActionPeripheralMarqueeFormatEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralMarqueeRepeatWait() {
+		return statemachineActionPeripheralMarqueeRepeatWaitEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralMarqueeRepeatWait_Device() {
+		return (EReference)statemachineActionPeripheralMarqueeRepeatWaitEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralMarqueeRepeatWait_Wait() {
+		return (EAttribute)statemachineActionPeripheralMarqueeRepeatWaitEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralMarqueeType() {
+		return statemachineActionPeripheralMarqueeTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralMarqueeType_Device() {
+		return (EReference)statemachineActionPeripheralMarqueeTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralMarqueeType_MarqueeType() {
+		return (EAttribute)statemachineActionPeripheralMarqueeTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralMarqueeUnitWait() {
+		return statemachineActionPeripheralMarqueeUnitWaitEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralMarqueeUnitWait_Device() {
+		return (EReference)statemachineActionPeripheralMarqueeUnitWaitEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralMarqueeUnitWait_Wait() {
+		return (EAttribute)statemachineActionPeripheralMarqueeUnitWaitEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralScroll() {
+		return statemachineActionPeripheralScrollEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralScroll_Device() {
+		return (EReference)statemachineActionPeripheralScrollEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralScroll_Direction() {
+		return (EAttribute)statemachineActionPeripheralScrollEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralScroll_Units() {
+		return (EAttribute)statemachineActionPeripheralScrollEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralOpenDrawer() {
+		return statemachineActionPeripheralOpenDrawerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralOpenDrawer_Device() {
+		return (EReference)statemachineActionPeripheralOpenDrawerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintBarcode() {
+		return statemachineActionPeripheralPrintBarcodeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintBarcode_Device() {
+		return (EReference)statemachineActionPeripheralPrintBarcodeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintBarcode_Data() {
+		return (EAttribute)statemachineActionPeripheralPrintBarcodeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintBarcode_BarcodeType() {
+		return (EAttribute)statemachineActionPeripheralPrintBarcodeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintBitmap() {
+		return statemachineActionPeripheralPrintBitmapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintBitmap_Device() {
+		return (EReference)statemachineActionPeripheralPrintBitmapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintBitmap_BitmapId() {
+		return (EAttribute)statemachineActionPeripheralPrintBitmapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintCut() {
+		return statemachineActionPeripheralPrintCutEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintCut_Device() {
+		return (EReference)statemachineActionPeripheralPrintCutEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintCut_Text() {
+		return (EReference)statemachineActionPeripheralPrintCutEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintRegisterBitmap() {
+		return statemachineActionPeripheralPrintRegisterBitmapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintRegisterBitmap_Device() {
+		return (EReference)statemachineActionPeripheralPrintRegisterBitmapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintRegisterBitmap_BitmapId() {
+		return (EAttribute)statemachineActionPeripheralPrintRegisterBitmapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintRegisterBitmap_Name() {
+		return (EAttribute)statemachineActionPeripheralPrintRegisterBitmapEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintNormal() {
+		return statemachineActionPeripheralPrintNormalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintNormal_Device() {
+		return (EReference)statemachineActionPeripheralPrintNormalEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintNormal_Text() {
+		return (EReference)statemachineActionPeripheralPrintNormalEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintNormal_BarcodeType() {
+		return (EAttribute)statemachineActionPeripheralPrintNormalEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTOpen() {
+		return statemachineActionPeripheralPTOpenEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTOpen_Device() {
+		return (EReference)statemachineActionPeripheralPTOpenEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTOpen_Host() {
+		return (EReference)statemachineActionPeripheralPTOpenEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTOpen_Port() {
+		return (EReference)statemachineActionPeripheralPTOpenEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTClose() {
+		return statemachineActionPeripheralPTCloseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTClose_Device() {
+		return (EReference)statemachineActionPeripheralPTCloseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTReversal() {
+		return statemachineActionPeripheralPTReversalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTReversal_Device() {
+		return (EReference)statemachineActionPeripheralPTReversalEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTReversal_Password() {
+		return (EReference)statemachineActionPeripheralPTReversalEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTReversal_Receipt() {
+		return (EReference)statemachineActionPeripheralPTReversalEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTAcknowledge() {
+		return statemachineActionPeripheralPTAcknowledgeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTAcknowledge_Device() {
+		return (EReference)statemachineActionPeripheralPTAcknowledgeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTRegistration() {
+		return statemachineActionPeripheralPTRegistrationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTRegistration_Device() {
+		return (EReference)statemachineActionPeripheralPTRegistrationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTRegistration_Password() {
+		return (EReference)statemachineActionPeripheralPTRegistrationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPTRegistration_Configuration() {
+		return (EAttribute)statemachineActionPeripheralPTRegistrationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTAuthorization() {
+		return statemachineActionPeripheralPTAuthorizationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTAuthorization_Device() {
+		return (EReference)statemachineActionPeripheralPTAuthorizationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTAuthorization_Amount() {
+		return (EReference)statemachineActionPeripheralPTAuthorizationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPTResponse() {
+		return statemachineActionPeripheralPTResponseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPTResponse_Device() {
+		return (EReference)statemachineActionPeripheralPTResponseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionPeripheralPrintReport() {
+		return statemachineActionPeripheralPrintReportEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintReport_Report() {
+		return (EReference)statemachineActionPeripheralPrintReportEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionPeripheralPrintReport_Key() {
+		return (EReference)statemachineActionPeripheralPrintReportEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionPeripheralPrintReport_HasFilter() {
+		return (EAttribute)statemachineActionPeripheralPrintReportEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSource() {
+		return statemachineActionFieldSourceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceString() {
+		return statemachineActionFieldSourceStringEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionFieldSourceString_Text() {
+		return (EAttribute)statemachineActionFieldSourceStringEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceNumber() {
+		return statemachineActionFieldSourceNumberEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionFieldSourceNumber_Value() {
+		return (EAttribute)statemachineActionFieldSourceNumberEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceEvaluate() {
+		return statemachineActionFieldSourceEvaluateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionFieldSourceEvaluate_Evaluationtype() {
+		return (EAttribute)statemachineActionFieldSourceEvaluateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceTranslate() {
+		return statemachineActionFieldSourceTranslateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionFieldSourceTranslate_Text() {
+		return (EAttribute)statemachineActionFieldSourceTranslateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceDtoAttribute() {
+		return statemachineActionFieldSourceDtoAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldSourceDtoAttribute_Dto() {
+		return (EReference)statemachineActionFieldSourceDtoAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldSourceDtoAttribute_Attribute() {
+		return (EReference)statemachineActionFieldSourceDtoAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSourceEvent() {
+		return statemachineActionFieldSourceEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionConditionalTransition() {
+		return statemachineActionConditionalTransitionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionConditionalTransition_Transition() {
+		return (EReference)statemachineActionConditionalTransitionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionConditionalTransition_Guard() {
+		return (EReference)statemachineActionConditionalTransitionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionConditionalTransition_Actions() {
+		return (EReference)statemachineActionConditionalTransitionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineOperationParameter() {
+		return statemachineOperationParameterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineOperationParameter_Source() {
+		return (EReference)statemachineOperationParameterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineOperation() {
+		return statemachineOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineOperation_Operation() {
+		return (EReference)statemachineOperationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineOperation_First() {
+		return (EReference)statemachineOperationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineOperation_More() {
+		return (EReference)statemachineOperationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineGuard() {
+		return statemachineGuardEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineGuard_Guard() {
+		return (EReference)statemachineGuardEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineGuard_HasOnFail() {
+		return (EAttribute)statemachineGuardEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineGuard_OnFailDescription() {
+		return (EAttribute)statemachineGuardEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineGuard_OnFailCaption() {
+		return (EAttribute)statemachineGuardEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineGuard_OnFailType() {
+		return (EAttribute)statemachineGuardEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineFunction() {
+		return statemachineFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineFunction_Function() {
+		return (EReference)statemachineFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineFunction_First() {
+		return (EReference)statemachineFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineFunction_More() {
+		return (EReference)statemachineFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineStorageRetrieve() {
+		return statemachineStorageRetrieveEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineStorageRetrieve_Key() {
+		return (EAttribute)statemachineStorageRetrieveEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineStorageRetrieve_Attribute() {
+		return (EAttribute)statemachineStorageRetrieveEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineStorage() {
+		return statemachineStorageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineStorage_Key() {
+		return (EAttribute)statemachineStorageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineStorage_Attribute() {
+		return (EAttribute)statemachineStorageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineStorage_Content() {
+		return (EReference)statemachineStorageEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldConcatenation() {
+		return statemachineActionFieldConcatenationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldConcatenation_First() {
+		return (EReference)statemachineActionFieldConcatenationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldConcatenation_More() {
+		return (EReference)statemachineActionFieldConcatenationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldSet() {
+		return statemachineActionFieldSetEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldSet_Attribute() {
+		return (EReference)statemachineActionFieldSetEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldSet_Source() {
+		return (EReference)statemachineActionFieldSetEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldKeystroke() {
+		return statemachineActionFieldKeystrokeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldKeystroke_Attribute() {
+		return (EReference)statemachineActionFieldKeystrokeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionFieldKeystroke_Keystroke() {
+		return (EAttribute)statemachineActionFieldKeystrokeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldClear() {
+		return statemachineActionFieldClearEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldClear_Attribute() {
+		return (EReference)statemachineActionFieldClearEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldGet() {
+		return statemachineActionFieldGetEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldGet_Attribute() {
+		return (EReference)statemachineActionFieldGetEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionFieldRemove() {
+		return statemachineActionFieldRemoveEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionFieldRemove_Attribute() {
+		return (EReference)statemachineActionFieldRemoveEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionItemVisible() {
+		return statemachineActionItemVisibleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionItemVisible_Attribute() {
+		return (EReference)statemachineActionItemVisibleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionItemInvisible() {
+		return statemachineActionItemInvisibleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionItemInvisible_Attribute() {
+		return (EReference)statemachineActionItemInvisibleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionButtonCaption() {
+		return statemachineActionButtonCaptionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionButtonCaption_Attribute() {
+		return (EReference)statemachineActionButtonCaptionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionButtonCaption_Caption() {
+		return (EReference)statemachineActionButtonCaptionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionButtonImage() {
+		return statemachineActionButtonImageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionButtonImage_Attribute() {
+		return (EReference)statemachineActionButtonImageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineActionButtonImage_Image() {
+		return (EAttribute)statemachineActionButtonImageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionDTOFind() {
+		return statemachineActionDTOFindEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionDTOFind_Dto() {
+		return (EReference)statemachineActionDTOFindEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionDTOFind_Attribute() {
+		return (EReference)statemachineActionDTOFindEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionDTOFind_Search() {
+		return (EReference)statemachineActionDTOFindEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineActionScheduler() {
+		return statemachineActionSchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineActionScheduler_Scheduler() {
+		return (EReference)statemachineActionSchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineDTOType() {
+		return statemachineDTOTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStatemachineDTOType_AttributeType() {
+		return (EReference)statemachineDTOTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStatemachineFieldType() {
+		return statemachineFieldTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStatemachineFieldType_AttributeType() {
+		return (EAttribute)statemachineFieldTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineInternalType() {
+		return statemachineInternalTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineControlButtonEventType() {
+		return statemachineControlButtonEventTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineEvaluationType() {
+		return statemachineEvaluationTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineUserMessageType() {
+		return statemachineUserMessageTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineLineDisplayCursorType() {
+		return statemachineLineDisplayCursorTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineLineDisplayMarqueeType() {
+		return statemachineLineDisplayMarqueeTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineLineDisplayMarqueeFormat() {
+		return statemachineLineDisplayMarqueeFormatEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineLineDisplayTextType() {
+		return statemachineLineDisplayTextTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachineLineDisplayScrollTextType() {
+		return statemachineLineDisplayScrollTextTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getStatemachinePOSPrinterBarcodeType() {
+		return statemachinePOSPrinterBarcodeTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDSLFactory getStatemachineDSLFactory() {
+		return (StatemachineDSLFactory)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
+		statemachineModelEClass = createEClass(STATEMACHINE_MODEL);
+		createEReference(statemachineModelEClass, STATEMACHINE_MODEL__PACKAGES);
+
+		statemachineLazyResolverEClass = createEClass(STATEMACHINE_LAZY_RESOLVER);
+		createEOperation(statemachineLazyResolverEClass, STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
+
+		statemachineBaseEClass = createEClass(STATEMACHINE_BASE);
+		createEAttribute(statemachineBaseEClass, STATEMACHINE_BASE__NAME);
+
+		statemachinePackageEClass = createEClass(STATEMACHINE_PACKAGE);
+		createEReference(statemachinePackageEClass, STATEMACHINE_PACKAGE__STATEMACHINES);
+
+		statemachineEClass = createEClass(STATEMACHINE);
+		createEAttribute(statemachineEClass, STATEMACHINE__DESCRIPTION);
+		createEAttribute(statemachineEClass, STATEMACHINE__DESCRIPTION_VALUE);
+		createEReference(statemachineEClass, STATEMACHINE__FUNCTION_GROUP);
+		createEReference(statemachineEClass, STATEMACHINE__INITIAL_EVENT);
+		createEReference(statemachineEClass, STATEMACHINE__INITIAL_STATE);
+		createEReference(statemachineEClass, STATEMACHINE__EVENTS);
+		createEReference(statemachineEClass, STATEMACHINE__CONTROLS);
+		createEReference(statemachineEClass, STATEMACHINE__STATES);
+
+		statemachineControlEClass = createEClass(STATEMACHINE_CONTROL);
+
+		statemachineControlButtonEClass = createEClass(STATEMACHINE_CONTROL_BUTTON);
+		createEAttribute(statemachineControlButtonEClass, STATEMACHINE_CONTROL_BUTTON__EVENT_TYPE);
+		createEReference(statemachineControlButtonEClass, STATEMACHINE_CONTROL_BUTTON__BUTTONS);
+
+		statemachineControlFieldEClass = createEClass(STATEMACHINE_CONTROL_FIELD);
+		createEReference(statemachineControlFieldEClass, STATEMACHINE_CONTROL_FIELD__FIELDS);
+		createEReference(statemachineControlFieldEClass, STATEMACHINE_CONTROL_FIELD__LAYOUTS);
+
+		statemachineControlDTOEClass = createEClass(STATEMACHINE_CONTROL_DTO);
+		createEReference(statemachineControlDTOEClass, STATEMACHINE_CONTROL_DTO__DTOS);
+
+		statemachineControlSchedulerEClass = createEClass(STATEMACHINE_CONTROL_SCHEDULER);
+		createEReference(statemachineControlSchedulerEClass, STATEMACHINE_CONTROL_SCHEDULER__SCHEDULERS);
+
+		statemachineControlPeripheralEClass = createEClass(STATEMACHINE_CONTROL_PERIPHERAL);
+		createEReference(statemachineControlPeripheralEClass, STATEMACHINE_CONTROL_PERIPHERAL__LINE_DISPLAYS);
+		createEReference(statemachineControlPeripheralEClass, STATEMACHINE_CONTROL_PERIPHERAL__POS_PRINTERS);
+		createEReference(statemachineControlPeripheralEClass, STATEMACHINE_CONTROL_PERIPHERAL__CASH_DRAWERS);
+		createEReference(statemachineControlPeripheralEClass, STATEMACHINE_CONTROL_PERIPHERAL__PAYMENT_TERMINALS);
+
+		statemachineControlButtonAttributeEClass = createEClass(STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE);
+		createEAttribute(statemachineControlButtonAttributeEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__HAS_IMAGE);
+		createEAttribute(statemachineControlButtonAttributeEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__IMAGE);
+		createEReference(statemachineControlButtonAttributeEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE__EVENT);
+
+		statemachineControlButtonAttributeEventEClass = createEClass(STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT);
+
+		statemachineControlButtonAttributeEventKeyboardEClass = createEClass(STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD);
+		createEAttribute(statemachineControlButtonAttributeEventKeyboardEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE);
+
+		statemachineControlButtonAttributeEventIdentityEClass = createEClass(STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY);
+		createEAttribute(statemachineControlButtonAttributeEventIdentityEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY);
+
+		statemachineControlButtonAttributeEventEventEClass = createEClass(STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT);
+		createEReference(statemachineControlButtonAttributeEventEventEClass, STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT);
+
+		statemachineControlVisibilityEClass = createEClass(STATEMACHINE_CONTROL_VISIBILITY);
+
+		statemachineControlFieldAttributeEClass = createEClass(STATEMACHINE_CONTROL_FIELD_ATTRIBUTE);
+		createEReference(statemachineControlFieldAttributeEClass, STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE);
+
+		statemachineControlFieldLayoutEClass = createEClass(STATEMACHINE_CONTROL_FIELD_LAYOUT);
+
+		statemachineControlDTOAttributeEClass = createEClass(STATEMACHINE_CONTROL_DTO_ATTRIBUTE);
+		createEReference(statemachineControlDTOAttributeEClass, STATEMACHINE_CONTROL_DTO_ATTRIBUTE__ATTRIBUTE_TYPE);
+		createEAttribute(statemachineControlDTOAttributeEClass, STATEMACHINE_CONTROL_DTO_ATTRIBUTE__HAS_EVENT);
+		createEReference(statemachineControlDTOAttributeEClass, STATEMACHINE_CONTROL_DTO_ATTRIBUTE__EVENT);
+
+		statemachinePeripheralDeviceEClass = createEClass(STATEMACHINE_PERIPHERAL_DEVICE);
+
+		statemachinePeripheralDeviceLineDisplayEClass = createEClass(STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY);
+
+		statemachinePeripheralDevicePOSPrinterEClass = createEClass(STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER);
+
+		statemachinePeripheralDeviceCashDrawerEClass = createEClass(STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER);
+
+		statemachinePeripheralDevicePTEClass = createEClass(STATEMACHINE_PERIPHERAL_DEVICE_PT);
+
+		statemachineControlSchedulerAttributeEClass = createEClass(STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE);
+		createEAttribute(statemachineControlSchedulerAttributeEClass, STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY);
+		createEReference(statemachineControlSchedulerAttributeEClass, STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT);
+
+		statemachineEventEClass = createEClass(STATEMACHINE_EVENT);
+
+		statemachineStateEClass = createEClass(STATEMACHINE_STATE);
+		createEReference(statemachineStateEClass, STATEMACHINE_STATE__TRIGGERS);
+		createEReference(statemachineStateEClass, STATEMACHINE_STATE__IDENTITY);
+		createEReference(statemachineStateEClass, STATEMACHINE_STATE__KEYSTROKE);
+		createEAttribute(statemachineStateEClass, STATEMACHINE_STATE__HAS_KEY_OPERATION);
+		createEReference(statemachineStateEClass, STATEMACHINE_STATE__KEY_OPERATION);
+
+		statemachineTriggerEClass = createEClass(STATEMACHINE_TRIGGER);
+		createEAttribute(statemachineTriggerEClass, STATEMACHINE_TRIGGER__HAS_TRANSITION);
+		createEReference(statemachineTriggerEClass, STATEMACHINE_TRIGGER__TRANSITION);
+		createEReference(statemachineTriggerEClass, STATEMACHINE_TRIGGER__TRIGGERS);
+		createEReference(statemachineTriggerEClass, STATEMACHINE_TRIGGER__GUARDS);
+		createEReference(statemachineTriggerEClass, STATEMACHINE_TRIGGER__ACTIONS);
+
+		statemachineActionEClass = createEClass(STATEMACHINE_ACTION);
+
+		statemachineActionPeripheralBlinkRateEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE);
+		createEReference(statemachineActionPeripheralBlinkRateEClass, STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE);
+		createEAttribute(statemachineActionPeripheralBlinkRateEClass, STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE);
+
+		statemachineActionPeripheralClearEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_CLEAR);
+		createEReference(statemachineActionPeripheralClearEClass, STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE);
+
+		statemachineActionPeripheralCreateWindowEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW);
+		createEReference(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT);
+		createEAttribute(statemachineActionPeripheralCreateWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH);
+
+		statemachineActionPeripheralCursorTypeEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE);
+		createEReference(statemachineActionPeripheralCursorTypeEClass, STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE);
+		createEAttribute(statemachineActionPeripheralCursorTypeEClass, STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE);
+
+		statemachineActionPeripheralDestroyWindowEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW);
+		createEReference(statemachineActionPeripheralDestroyWindowEClass, STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE);
+
+		statemachineActionPeripheralDeviceBrightnessEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS);
+		createEReference(statemachineActionPeripheralDeviceBrightnessEClass, STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE);
+		createEAttribute(statemachineActionPeripheralDeviceBrightnessEClass, STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS);
+
+		statemachineActionPeripheralDisplayBitmapEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP);
+		createEReference(statemachineActionPeripheralDisplayBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE);
+		createEAttribute(statemachineActionPeripheralDisplayBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID);
+
+		statemachineActionPeripheralDisplayTextEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT);
+		createEReference(statemachineActionPeripheralDisplayTextEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE);
+		createEReference(statemachineActionPeripheralDisplayTextEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT);
+		createEAttribute(statemachineActionPeripheralDisplayTextEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__HAS_TYPE);
+		createEAttribute(statemachineActionPeripheralDisplayTextEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__TEXT_TYPE);
+
+		statemachineActionPeripheralDisplayTextAtEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT);
+		createEReference(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE);
+		createEAttribute(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__ROW);
+		createEAttribute(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__COLUMN);
+		createEReference(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT);
+		createEAttribute(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__HAS_TYPE);
+		createEAttribute(statemachineActionPeripheralDisplayTextAtEClass, STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__TEXT_TYPE);
+
+		statemachineActionPeripheralInterCharacterWaitEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT);
+		createEReference(statemachineActionPeripheralInterCharacterWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE);
+		createEAttribute(statemachineActionPeripheralInterCharacterWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT);
+
+		statemachineActionPeripheralMarqueeFormatEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT);
+		createEReference(statemachineActionPeripheralMarqueeFormatEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE);
+		createEAttribute(statemachineActionPeripheralMarqueeFormatEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT);
+
+		statemachineActionPeripheralMarqueeRepeatWaitEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT);
+		createEReference(statemachineActionPeripheralMarqueeRepeatWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE);
+		createEAttribute(statemachineActionPeripheralMarqueeRepeatWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT);
+
+		statemachineActionPeripheralMarqueeTypeEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE);
+		createEReference(statemachineActionPeripheralMarqueeTypeEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE);
+		createEAttribute(statemachineActionPeripheralMarqueeTypeEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE);
+
+		statemachineActionPeripheralMarqueeUnitWaitEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT);
+		createEReference(statemachineActionPeripheralMarqueeUnitWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE);
+		createEAttribute(statemachineActionPeripheralMarqueeUnitWaitEClass, STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT);
+
+		statemachineActionPeripheralScrollEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_SCROLL);
+		createEReference(statemachineActionPeripheralScrollEClass, STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE);
+		createEAttribute(statemachineActionPeripheralScrollEClass, STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION);
+		createEAttribute(statemachineActionPeripheralScrollEClass, STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS);
+
+		statemachineActionPeripheralOpenDrawerEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER);
+		createEReference(statemachineActionPeripheralOpenDrawerEClass, STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE);
+
+		statemachineActionPeripheralPrintBarcodeEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE);
+		createEReference(statemachineActionPeripheralPrintBarcodeEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE);
+		createEAttribute(statemachineActionPeripheralPrintBarcodeEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA);
+		createEAttribute(statemachineActionPeripheralPrintBarcodeEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE);
+
+		statemachineActionPeripheralPrintBitmapEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP);
+		createEReference(statemachineActionPeripheralPrintBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE);
+		createEAttribute(statemachineActionPeripheralPrintBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID);
+
+		statemachineActionPeripheralPrintCutEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT);
+		createEReference(statemachineActionPeripheralPrintCutEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE);
+		createEReference(statemachineActionPeripheralPrintCutEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT);
+
+		statemachineActionPeripheralPrintRegisterBitmapEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP);
+		createEReference(statemachineActionPeripheralPrintRegisterBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE);
+		createEAttribute(statemachineActionPeripheralPrintRegisterBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID);
+		createEAttribute(statemachineActionPeripheralPrintRegisterBitmapEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME);
+
+		statemachineActionPeripheralPrintNormalEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL);
+		createEReference(statemachineActionPeripheralPrintNormalEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE);
+		createEReference(statemachineActionPeripheralPrintNormalEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__TEXT);
+		createEAttribute(statemachineActionPeripheralPrintNormalEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__BARCODE_TYPE);
+
+		statemachineActionPeripheralPTOpenEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN);
+		createEReference(statemachineActionPeripheralPTOpenEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE);
+		createEReference(statemachineActionPeripheralPTOpenEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST);
+		createEReference(statemachineActionPeripheralPTOpenEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT);
+
+		statemachineActionPeripheralPTCloseEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE);
+		createEReference(statemachineActionPeripheralPTCloseEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE);
+
+		statemachineActionPeripheralPTReversalEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL);
+		createEReference(statemachineActionPeripheralPTReversalEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE);
+		createEReference(statemachineActionPeripheralPTReversalEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD);
+		createEReference(statemachineActionPeripheralPTReversalEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT);
+
+		statemachineActionPeripheralPTAcknowledgeEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE);
+		createEReference(statemachineActionPeripheralPTAcknowledgeEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE);
+
+		statemachineActionPeripheralPTRegistrationEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION);
+		createEReference(statemachineActionPeripheralPTRegistrationEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE);
+		createEReference(statemachineActionPeripheralPTRegistrationEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD);
+		createEAttribute(statemachineActionPeripheralPTRegistrationEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION);
+
+		statemachineActionPeripheralPTAuthorizationEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION);
+		createEReference(statemachineActionPeripheralPTAuthorizationEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE);
+		createEReference(statemachineActionPeripheralPTAuthorizationEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT);
+
+		statemachineActionPeripheralPTResponseEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE);
+		createEReference(statemachineActionPeripheralPTResponseEClass, STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE);
+
+		statemachineActionPeripheralPrintReportEClass = createEClass(STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT);
+		createEReference(statemachineActionPeripheralPrintReportEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__REPORT);
+		createEReference(statemachineActionPeripheralPrintReportEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY);
+		createEAttribute(statemachineActionPeripheralPrintReportEClass, STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__HAS_FILTER);
+
+		statemachineActionFieldSourceEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE);
+
+		statemachineActionFieldSourceStringEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_STRING);
+		createEAttribute(statemachineActionFieldSourceStringEClass, STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT);
+
+		statemachineActionFieldSourceNumberEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER);
+		createEAttribute(statemachineActionFieldSourceNumberEClass, STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE);
+
+		statemachineActionFieldSourceEvaluateEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE);
+		createEAttribute(statemachineActionFieldSourceEvaluateEClass, STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE);
+
+		statemachineActionFieldSourceTranslateEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE);
+		createEAttribute(statemachineActionFieldSourceTranslateEClass, STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT);
+
+		statemachineActionFieldSourceDtoAttributeEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE);
+		createEReference(statemachineActionFieldSourceDtoAttributeEClass, STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO);
+		createEReference(statemachineActionFieldSourceDtoAttributeEClass, STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE);
+
+		statemachineActionFieldSourceEventEClass = createEClass(STATEMACHINE_ACTION_FIELD_SOURCE_EVENT);
+
+		statemachineActionConditionalTransitionEClass = createEClass(STATEMACHINE_ACTION_CONDITIONAL_TRANSITION);
+		createEReference(statemachineActionConditionalTransitionEClass, STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__TRANSITION);
+		createEReference(statemachineActionConditionalTransitionEClass, STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD);
+		createEReference(statemachineActionConditionalTransitionEClass, STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__ACTIONS);
+
+		statemachineOperationParameterEClass = createEClass(STATEMACHINE_OPERATION_PARAMETER);
+		createEReference(statemachineOperationParameterEClass, STATEMACHINE_OPERATION_PARAMETER__SOURCE);
+
+		statemachineOperationEClass = createEClass(STATEMACHINE_OPERATION);
+		createEReference(statemachineOperationEClass, STATEMACHINE_OPERATION__OPERATION);
+		createEReference(statemachineOperationEClass, STATEMACHINE_OPERATION__FIRST);
+		createEReference(statemachineOperationEClass, STATEMACHINE_OPERATION__MORE);
+
+		statemachineGuardEClass = createEClass(STATEMACHINE_GUARD);
+		createEReference(statemachineGuardEClass, STATEMACHINE_GUARD__GUARD);
+		createEAttribute(statemachineGuardEClass, STATEMACHINE_GUARD__HAS_ON_FAIL);
+		createEAttribute(statemachineGuardEClass, STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION);
+		createEAttribute(statemachineGuardEClass, STATEMACHINE_GUARD__ON_FAIL_CAPTION);
+		createEAttribute(statemachineGuardEClass, STATEMACHINE_GUARD__ON_FAIL_TYPE);
+
+		statemachineFunctionEClass = createEClass(STATEMACHINE_FUNCTION);
+		createEReference(statemachineFunctionEClass, STATEMACHINE_FUNCTION__FUNCTION);
+		createEReference(statemachineFunctionEClass, STATEMACHINE_FUNCTION__FIRST);
+		createEReference(statemachineFunctionEClass, STATEMACHINE_FUNCTION__MORE);
+
+		statemachineStorageRetrieveEClass = createEClass(STATEMACHINE_STORAGE_RETRIEVE);
+		createEAttribute(statemachineStorageRetrieveEClass, STATEMACHINE_STORAGE_RETRIEVE__KEY);
+		createEAttribute(statemachineStorageRetrieveEClass, STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE);
+
+		statemachineStorageEClass = createEClass(STATEMACHINE_STORAGE);
+		createEAttribute(statemachineStorageEClass, STATEMACHINE_STORAGE__KEY);
+		createEAttribute(statemachineStorageEClass, STATEMACHINE_STORAGE__ATTRIBUTE);
+		createEReference(statemachineStorageEClass, STATEMACHINE_STORAGE__CONTENT);
+
+		statemachineActionFieldConcatenationEClass = createEClass(STATEMACHINE_ACTION_FIELD_CONCATENATION);
+		createEReference(statemachineActionFieldConcatenationEClass, STATEMACHINE_ACTION_FIELD_CONCATENATION__FIRST);
+		createEReference(statemachineActionFieldConcatenationEClass, STATEMACHINE_ACTION_FIELD_CONCATENATION__MORE);
+
+		statemachineActionFieldSetEClass = createEClass(STATEMACHINE_ACTION_FIELD_SET);
+		createEReference(statemachineActionFieldSetEClass, STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE);
+		createEReference(statemachineActionFieldSetEClass, STATEMACHINE_ACTION_FIELD_SET__SOURCE);
+
+		statemachineActionFieldKeystrokeEClass = createEClass(STATEMACHINE_ACTION_FIELD_KEYSTROKE);
+		createEReference(statemachineActionFieldKeystrokeEClass, STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE);
+		createEAttribute(statemachineActionFieldKeystrokeEClass, STATEMACHINE_ACTION_FIELD_KEYSTROKE__KEYSTROKE);
+
+		statemachineActionFieldClearEClass = createEClass(STATEMACHINE_ACTION_FIELD_CLEAR);
+		createEReference(statemachineActionFieldClearEClass, STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE);
+
+		statemachineActionFieldGetEClass = createEClass(STATEMACHINE_ACTION_FIELD_GET);
+		createEReference(statemachineActionFieldGetEClass, STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE);
+
+		statemachineActionFieldRemoveEClass = createEClass(STATEMACHINE_ACTION_FIELD_REMOVE);
+		createEReference(statemachineActionFieldRemoveEClass, STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE);
+
+		statemachineActionItemVisibleEClass = createEClass(STATEMACHINE_ACTION_ITEM_VISIBLE);
+		createEReference(statemachineActionItemVisibleEClass, STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE);
+
+		statemachineActionItemInvisibleEClass = createEClass(STATEMACHINE_ACTION_ITEM_INVISIBLE);
+		createEReference(statemachineActionItemInvisibleEClass, STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE);
+
+		statemachineActionButtonCaptionEClass = createEClass(STATEMACHINE_ACTION_BUTTON_CAPTION);
+		createEReference(statemachineActionButtonCaptionEClass, STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE);
+		createEReference(statemachineActionButtonCaptionEClass, STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION);
+
+		statemachineActionButtonImageEClass = createEClass(STATEMACHINE_ACTION_BUTTON_IMAGE);
+		createEReference(statemachineActionButtonImageEClass, STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE);
+		createEAttribute(statemachineActionButtonImageEClass, STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE);
+
+		statemachineActionDTOFindEClass = createEClass(STATEMACHINE_ACTION_DTO_FIND);
+		createEReference(statemachineActionDTOFindEClass, STATEMACHINE_ACTION_DTO_FIND__DTO);
+		createEReference(statemachineActionDTOFindEClass, STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE);
+		createEReference(statemachineActionDTOFindEClass, STATEMACHINE_ACTION_DTO_FIND__SEARCH);
+
+		statemachineActionSchedulerEClass = createEClass(STATEMACHINE_ACTION_SCHEDULER);
+		createEReference(statemachineActionSchedulerEClass, STATEMACHINE_ACTION_SCHEDULER__SCHEDULER);
+
+		statemachineDTOTypeEClass = createEClass(STATEMACHINE_DTO_TYPE);
+		createEReference(statemachineDTOTypeEClass, STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE);
+
+		statemachineFieldTypeEClass = createEClass(STATEMACHINE_FIELD_TYPE);
+		createEAttribute(statemachineFieldTypeEClass, STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE);
+
+		// Create enums
+		statemachineInternalTypeEEnum = createEEnum(STATEMACHINE_INTERNAL_TYPE);
+		statemachineControlButtonEventTypeEEnum = createEEnum(STATEMACHINE_CONTROL_BUTTON_EVENT_TYPE);
+		statemachineEvaluationTypeEEnum = createEEnum(STATEMACHINE_EVALUATION_TYPE);
+		statemachineUserMessageTypeEEnum = createEEnum(STATEMACHINE_USER_MESSAGE_TYPE);
+		statemachineLineDisplayCursorTypeEEnum = createEEnum(STATEMACHINE_LINE_DISPLAY_CURSOR_TYPE);
+		statemachineLineDisplayMarqueeTypeEEnum = createEEnum(STATEMACHINE_LINE_DISPLAY_MARQUEE_TYPE);
+		statemachineLineDisplayMarqueeFormatEEnum = createEEnum(STATEMACHINE_LINE_DISPLAY_MARQUEE_FORMAT);
+		statemachineLineDisplayTextTypeEEnum = createEEnum(STATEMACHINE_LINE_DISPLAY_TEXT_TYPE);
+		statemachineLineDisplayScrollTextTypeEEnum = createEEnum(STATEMACHINE_LINE_DISPLAY_SCROLL_TEXT_TYPE);
+		statemachinePOSPrinterBarcodeTypeEEnum = createEEnum(STATEMACHINE_POS_PRINTER_BARCODE_TYPE);
+
+		// 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);
+		FunctionLibraryDSLPackage theFunctionLibraryDSLPackage = (FunctionLibraryDSLPackage)EPackage.Registry.INSTANCE.getEPackage(FunctionLibraryDSLPackage.eNS_URI);
+		ReportDSLPackage theReportDSLPackage = (ReportDSLPackage)EPackage.Registry.INSTANCE.getEPackage(ReportDSLPackage.eNS_URI);
+		OSBPDtoPackage theOSBPDtoPackage = (OSBPDtoPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPDtoPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		statemachineBaseEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachinePackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
+		statemachineEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineControlEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineControlButtonEClass.getESuperTypes().add(this.getStatemachineControl());
+		statemachineControlButtonEClass.getESuperTypes().add(this.getStatemachineControlVisibility());
+		statemachineControlFieldEClass.getESuperTypes().add(this.getStatemachineControl());
+		statemachineControlDTOEClass.getESuperTypes().add(this.getStatemachineControl());
+		statemachineControlSchedulerEClass.getESuperTypes().add(this.getStatemachineControl());
+		statemachineControlPeripheralEClass.getESuperTypes().add(this.getStatemachineControl());
+		statemachineControlButtonAttributeEClass.getESuperTypes().add(this.getStatemachineControlVisibility());
+		statemachineControlButtonAttributeEventEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachineControlButtonAttributeEventKeyboardEClass.getESuperTypes().add(this.getStatemachineControlButtonAttributeEvent());
+		statemachineControlButtonAttributeEventIdentityEClass.getESuperTypes().add(this.getStatemachineControlButtonAttributeEvent());
+		statemachineControlButtonAttributeEventEventEClass.getESuperTypes().add(this.getStatemachineControlButtonAttributeEvent());
+		statemachineControlVisibilityEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineControlFieldAttributeEClass.getESuperTypes().add(this.getStatemachineControlVisibility());
+		statemachineControlFieldLayoutEClass.getESuperTypes().add(this.getStatemachineControlVisibility());
+		statemachineControlDTOAttributeEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachinePeripheralDeviceEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachinePeripheralDeviceLineDisplayEClass.getESuperTypes().add(this.getStatemachinePeripheralDevice());
+		statemachinePeripheralDevicePOSPrinterEClass.getESuperTypes().add(this.getStatemachinePeripheralDevice());
+		statemachinePeripheralDeviceCashDrawerEClass.getESuperTypes().add(this.getStatemachinePeripheralDevice());
+		statemachinePeripheralDevicePTEClass.getESuperTypes().add(this.getStatemachinePeripheralDevice());
+		statemachineControlSchedulerAttributeEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineEventEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineStateEClass.getESuperTypes().add(this.getStatemachineBase());
+		statemachineTriggerEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachineActionEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachineActionPeripheralBlinkRateEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralClearEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralCreateWindowEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralCursorTypeEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralDestroyWindowEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralDeviceBrightnessEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralDisplayBitmapEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralDisplayTextEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralDisplayTextAtEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralInterCharacterWaitEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralMarqueeFormatEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralMarqueeRepeatWaitEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralMarqueeTypeEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralMarqueeUnitWaitEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralScrollEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralOpenDrawerEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPrintBarcodeEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPrintBitmapEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPrintCutEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPrintRegisterBitmapEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPrintNormalEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTOpenEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTCloseEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTReversalEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTAcknowledgeEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTRegistrationEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTAuthorizationEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionPeripheralPTResponseEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionPeripheralPrintReportEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldSourceEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldSourceStringEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldSourceNumberEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldSourceEvaluateEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldSourceTranslateEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldSourceDtoAttributeEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldSourceEventEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionConditionalTransitionEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineOperationParameterEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineOperationEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineGuardEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachineFunctionEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineStorageRetrieveEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineStorageEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldConcatenationEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldSetEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldKeystrokeEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldClearEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionFieldGetEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionFieldRemoveEClass.getESuperTypes().add(this.getStatemachineActionFieldSource());
+		statemachineActionItemVisibleEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionItemInvisibleEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionButtonCaptionEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionButtonImageEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionDTOFindEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineActionSchedulerEClass.getESuperTypes().add(this.getStatemachineAction());
+		statemachineDTOTypeEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+		statemachineFieldTypeEClass.getESuperTypes().add(this.getStatemachineLazyResolver());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(statemachineModelEClass, StatemachineModel.class, "StatemachineModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineModel_Packages(), this.getStatemachinePackage(), null, "packages", null, 0, -1, StatemachineModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineLazyResolverEClass, StatemachineLazyResolver.class, "StatemachineLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getStatemachineLazyResolver__EResolveProxy__InternalEObject(), theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(statemachineBaseEClass, StatemachineBase.class, "StatemachineBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, StatemachineBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachinePackageEClass, StatemachinePackage.class, "StatemachinePackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachinePackage_Statemachines(), this.getStatemachine(), null, "statemachines", null, 0, -1, StatemachinePackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineEClass, Statemachine.class, "Statemachine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachine_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachine_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_FunctionGroup(), theFunctionLibraryDSLPackage.getFunctionLibraryStatemachineGroup(), null, "functionGroup", null, 0, 1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_InitialEvent(), this.getStatemachineEvent(), null, "initialEvent", null, 0, 1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_InitialState(), this.getStatemachineState(), null, "initialState", null, 0, 1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_Events(), this.getStatemachineEvent(), null, "events", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_Controls(), this.getStatemachineControl(), null, "controls", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachine_States(), this.getStatemachineState(), null, "states", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlEClass, StatemachineControl.class, "StatemachineControl", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineControlButtonEClass, StatemachineControlButton.class, "StatemachineControlButton", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineControlButton_EventType(), this.getStatemachineControlButtonEventType(), "eventType", null, 0, 1, StatemachineControlButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlButton_Buttons(), this.getStatemachineControlButtonAttribute(), null, "buttons", null, 0, -1, StatemachineControlButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlFieldEClass, StatemachineControlField.class, "StatemachineControlField", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlField_Fields(), this.getStatemachineControlFieldAttribute(), null, "fields", null, 0, -1, StatemachineControlField.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlField_Layouts(), this.getStatemachineControlFieldLayout(), null, "layouts", null, 0, -1, StatemachineControlField.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlDTOEClass, StatemachineControlDTO.class, "StatemachineControlDTO", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlDTO_Dtos(), this.getStatemachineControlDTOAttribute(), null, "dtos", null, 0, -1, StatemachineControlDTO.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlSchedulerEClass, StatemachineControlScheduler.class, "StatemachineControlScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlScheduler_Schedulers(), this.getStatemachineControlSchedulerAttribute(), null, "schedulers", null, 0, -1, StatemachineControlScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlPeripheralEClass, StatemachineControlPeripheral.class, "StatemachineControlPeripheral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlPeripheral_LineDisplays(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "lineDisplays", null, 0, -1, StatemachineControlPeripheral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlPeripheral_PosPrinters(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "posPrinters", null, 0, -1, StatemachineControlPeripheral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlPeripheral_CashDrawers(), this.getStatemachinePeripheralDeviceCashDrawer(), null, "cashDrawers", null, 0, -1, StatemachineControlPeripheral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlPeripheral_PaymentTerminals(), this.getStatemachinePeripheralDevicePT(), null, "paymentTerminals", null, 0, -1, StatemachineControlPeripheral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlButtonAttributeEClass, StatemachineControlButtonAttribute.class, "StatemachineControlButtonAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineControlButtonAttribute_HasImage(), theEcorePackage.getEBoolean(), "hasImage", null, 0, 1, StatemachineControlButtonAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineControlButtonAttribute_Image(), theEcorePackage.getEString(), "image", null, 0, 1, StatemachineControlButtonAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlButtonAttribute_Event(), this.getStatemachineControlButtonAttributeEvent(), null, "event", null, 0, 1, StatemachineControlButtonAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlButtonAttributeEventEClass, StatemachineControlButtonAttributeEvent.class, "StatemachineControlButtonAttributeEvent", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineControlButtonAttributeEventKeyboardEClass, StatemachineControlButtonAttributeEventKeyboard.class, "StatemachineControlButtonAttributeEventKeyboard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineControlButtonAttributeEventKeyboard_Keystroke(), theEcorePackage.getEString(), "keystroke", null, 0, 1, StatemachineControlButtonAttributeEventKeyboard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlButtonAttributeEventIdentityEClass, StatemachineControlButtonAttributeEventIdentity.class, "StatemachineControlButtonAttributeEventIdentity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineControlButtonAttributeEventIdentity_Identity(), theEcorePackage.getEInt(), "identity", null, 0, 1, StatemachineControlButtonAttributeEventIdentity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlButtonAttributeEventEventEClass, StatemachineControlButtonAttributeEventEvent.class, "StatemachineControlButtonAttributeEventEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlButtonAttributeEventEvent_Event(), this.getStatemachineEvent(), null, "event", null, 0, 1, StatemachineControlButtonAttributeEventEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlVisibilityEClass, StatemachineControlVisibility.class, "StatemachineControlVisibility", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineControlFieldAttributeEClass, StatemachineControlFieldAttribute.class, "StatemachineControlFieldAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlFieldAttribute_AttributeType(), this.getStatemachineFieldType(), null, "attributeType", null, 0, 1, StatemachineControlFieldAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineControlFieldLayoutEClass, StatemachineControlFieldLayout.class, "StatemachineControlFieldLayout", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineControlDTOAttributeEClass, StatemachineControlDTOAttribute.class, "StatemachineControlDTOAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineControlDTOAttribute_AttributeType(), this.getStatemachineDTOType(), null, "attributeType", null, 0, 1, StatemachineControlDTOAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineControlDTOAttribute_HasEvent(), theEcorePackage.getEBoolean(), "hasEvent", null, 0, 1, StatemachineControlDTOAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlDTOAttribute_Event(), this.getStatemachineEvent(), null, "event", null, 0, 1, StatemachineControlDTOAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachinePeripheralDeviceEClass, StatemachinePeripheralDevice.class, "StatemachinePeripheralDevice", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachinePeripheralDeviceLineDisplayEClass, StatemachinePeripheralDeviceLineDisplay.class, "StatemachinePeripheralDeviceLineDisplay", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachinePeripheralDevicePOSPrinterEClass, StatemachinePeripheralDevicePOSPrinter.class, "StatemachinePeripheralDevicePOSPrinter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachinePeripheralDeviceCashDrawerEClass, StatemachinePeripheralDeviceCashDrawer.class, "StatemachinePeripheralDeviceCashDrawer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachinePeripheralDevicePTEClass, StatemachinePeripheralDevicePT.class, "StatemachinePeripheralDevicePT", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineControlSchedulerAttributeEClass, StatemachineControlSchedulerAttribute.class, "StatemachineControlSchedulerAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineControlSchedulerAttribute_Delay(), theEcorePackage.getEInt(), "delay", null, 0, 1, StatemachineControlSchedulerAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineControlSchedulerAttribute_Event(), this.getStatemachineEvent(), null, "event", null, 0, 1, StatemachineControlSchedulerAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineEventEClass, StatemachineEvent.class, "StatemachineEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineStateEClass, StatemachineState.class, "StatemachineState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineState_Triggers(), this.getStatemachineTrigger(), null, "triggers", null, 0, -1, StatemachineState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineState_Identity(), this.getStatemachineOperation(), null, "identity", null, 0, 1, StatemachineState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineState_Keystroke(), this.getStatemachineControlFieldAttribute(), null, "keystroke", null, 0, 1, StatemachineState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineState_HasKeyOperation(), theEcorePackage.getEBoolean(), "hasKeyOperation", null, 0, 1, StatemachineState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineState_KeyOperation(), this.getStatemachineOperation(), null, "keyOperation", null, 0, 1, StatemachineState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineTriggerEClass, StatemachineTrigger.class, "StatemachineTrigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineTrigger_HasTransition(), theEcorePackage.getEBoolean(), "hasTransition", null, 0, 1, StatemachineTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineTrigger_Transition(), this.getStatemachineState(), null, "transition", null, 0, 1, StatemachineTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineTrigger_Triggers(), this.getStatemachineEvent(), null, "triggers", null, 0, -1, StatemachineTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineTrigger_Guards(), this.getStatemachineGuard(), null, "guards", null, 0, -1, StatemachineTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineTrigger_Actions(), this.getStatemachineAction(), null, "actions", null, 0, -1, StatemachineTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionEClass, StatemachineAction.class, "StatemachineAction", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineActionPeripheralBlinkRateEClass, StatemachineActionPeripheralBlinkRate.class, "StatemachineActionPeripheralBlinkRate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralBlinkRate_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralBlinkRate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralBlinkRate_BlinkRate(), theEcorePackage.getEInt(), "blinkRate", null, 0, 1, StatemachineActionPeripheralBlinkRate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralClearEClass, StatemachineActionPeripheralClear.class, "StatemachineActionPeripheralClear", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralClear_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralClear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralCreateWindowEClass, StatemachineActionPeripheralCreateWindow.class, "StatemachineActionPeripheralCreateWindow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralCreateWindow_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_ViewportRow(), theEcorePackage.getEInt(), "viewportRow", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_ViewportColumn(), theEcorePackage.getEInt(), "viewportColumn", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_ViewportHeight(), theEcorePackage.getEInt(), "viewportHeight", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_ViewportWidth(), theEcorePackage.getEInt(), "viewportWidth", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_WindowHeight(), theEcorePackage.getEInt(), "windowHeight", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCreateWindow_WindowWidth(), theEcorePackage.getEInt(), "windowWidth", null, 0, 1, StatemachineActionPeripheralCreateWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralCursorTypeEClass, StatemachineActionPeripheralCursorType.class, "StatemachineActionPeripheralCursorType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralCursorType_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralCursorType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralCursorType_CursorType(), this.getStatemachineLineDisplayCursorType(), "cursorType", null, 0, 1, StatemachineActionPeripheralCursorType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralDestroyWindowEClass, StatemachineActionPeripheralDestroyWindow.class, "StatemachineActionPeripheralDestroyWindow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralDestroyWindow_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralDestroyWindow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralDeviceBrightnessEClass, StatemachineActionPeripheralDeviceBrightness.class, "StatemachineActionPeripheralDeviceBrightness", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralDeviceBrightness_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralDeviceBrightness.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDeviceBrightness_Brightness(), theEcorePackage.getEInt(), "brightness", null, 0, 1, StatemachineActionPeripheralDeviceBrightness.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralDisplayBitmapEClass, StatemachineActionPeripheralDisplayBitmap.class, "StatemachineActionPeripheralDisplayBitmap", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralDisplayBitmap_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralDisplayBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayBitmap_BitmapId(), theEcorePackage.getEInt(), "bitmapId", null, 0, 1, StatemachineActionPeripheralDisplayBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralDisplayTextEClass, StatemachineActionPeripheralDisplayText.class, "StatemachineActionPeripheralDisplayText", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralDisplayText_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralDisplayText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralDisplayText_Text(), this.getStatemachineActionFieldConcatenation(), null, "text", null, 0, 1, StatemachineActionPeripheralDisplayText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayText_HasType(), theEcorePackage.getEBoolean(), "hasType", null, 0, 1, StatemachineActionPeripheralDisplayText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayText_TextType(), this.getStatemachineLineDisplayTextType(), "textType", null, 0, 1, StatemachineActionPeripheralDisplayText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralDisplayTextAtEClass, StatemachineActionPeripheralDisplayTextAt.class, "StatemachineActionPeripheralDisplayTextAt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralDisplayTextAt_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayTextAt_Row(), theEcorePackage.getEInt(), "row", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayTextAt_Column(), theEcorePackage.getEInt(), "column", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralDisplayTextAt_Text(), this.getStatemachineActionFieldConcatenation(), null, "text", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayTextAt_HasType(), theEcorePackage.getEBoolean(), "hasType", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralDisplayTextAt_TextType(), this.getStatemachineLineDisplayTextType(), "textType", null, 0, 1, StatemachineActionPeripheralDisplayTextAt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralInterCharacterWaitEClass, StatemachineActionPeripheralInterCharacterWait.class, "StatemachineActionPeripheralInterCharacterWait", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralInterCharacterWait_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralInterCharacterWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralInterCharacterWait_Wait(), theEcorePackage.getEInt(), "wait", null, 0, 1, StatemachineActionPeripheralInterCharacterWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralMarqueeFormatEClass, StatemachineActionPeripheralMarqueeFormat.class, "StatemachineActionPeripheralMarqueeFormat", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralMarqueeFormat_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralMarqueeFormat.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralMarqueeFormat_Format(), this.getStatemachineLineDisplayMarqueeFormat(), "format", null, 0, 1, StatemachineActionPeripheralMarqueeFormat.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralMarqueeRepeatWaitEClass, StatemachineActionPeripheralMarqueeRepeatWait.class, "StatemachineActionPeripheralMarqueeRepeatWait", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralMarqueeRepeatWait_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralMarqueeRepeatWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralMarqueeRepeatWait_Wait(), theEcorePackage.getEInt(), "wait", null, 0, 1, StatemachineActionPeripheralMarqueeRepeatWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralMarqueeTypeEClass, StatemachineActionPeripheralMarqueeType.class, "StatemachineActionPeripheralMarqueeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralMarqueeType_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralMarqueeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralMarqueeType_MarqueeType(), this.getStatemachineLineDisplayMarqueeType(), "marqueeType", null, 0, 1, StatemachineActionPeripheralMarqueeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralMarqueeUnitWaitEClass, StatemachineActionPeripheralMarqueeUnitWait.class, "StatemachineActionPeripheralMarqueeUnitWait", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralMarqueeUnitWait_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralMarqueeUnitWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralMarqueeUnitWait_Wait(), theEcorePackage.getEInt(), "wait", null, 0, 1, StatemachineActionPeripheralMarqueeUnitWait.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralScrollEClass, StatemachineActionPeripheralScroll.class, "StatemachineActionPeripheralScroll", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralScroll_Device(), this.getStatemachinePeripheralDeviceLineDisplay(), null, "device", null, 0, 1, StatemachineActionPeripheralScroll.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralScroll_Direction(), this.getStatemachineLineDisplayScrollTextType(), "direction", null, 0, 1, StatemachineActionPeripheralScroll.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralScroll_Units(), theEcorePackage.getEInt(), "units", null, 0, 1, StatemachineActionPeripheralScroll.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralOpenDrawerEClass, StatemachineActionPeripheralOpenDrawer.class, "StatemachineActionPeripheralOpenDrawer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralOpenDrawer_Device(), this.getStatemachinePeripheralDeviceCashDrawer(), null, "device", null, 0, 1, StatemachineActionPeripheralOpenDrawer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintBarcodeEClass, StatemachineActionPeripheralPrintBarcode.class, "StatemachineActionPeripheralPrintBarcode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintBarcode_Device(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "device", null, 0, 1, StatemachineActionPeripheralPrintBarcode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintBarcode_Data(), theEcorePackage.getEString(), "data", null, 0, 1, StatemachineActionPeripheralPrintBarcode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintBarcode_BarcodeType(), this.getStatemachinePOSPrinterBarcodeType(), "barcodeType", null, 0, 1, StatemachineActionPeripheralPrintBarcode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintBitmapEClass, StatemachineActionPeripheralPrintBitmap.class, "StatemachineActionPeripheralPrintBitmap", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintBitmap_Device(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "device", null, 0, 1, StatemachineActionPeripheralPrintBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintBitmap_BitmapId(), theEcorePackage.getEInt(), "bitmapId", null, 0, 1, StatemachineActionPeripheralPrintBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintCutEClass, StatemachineActionPeripheralPrintCut.class, "StatemachineActionPeripheralPrintCut", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintCut_Device(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "device", null, 0, 1, StatemachineActionPeripheralPrintCut.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPrintCut_Text(), this.getStatemachineActionFieldConcatenation(), null, "text", null, 0, 1, StatemachineActionPeripheralPrintCut.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintRegisterBitmapEClass, StatemachineActionPeripheralPrintRegisterBitmap.class, "StatemachineActionPeripheralPrintRegisterBitmap", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintRegisterBitmap_Device(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "device", null, 0, 1, StatemachineActionPeripheralPrintRegisterBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintRegisterBitmap_BitmapId(), theEcorePackage.getEInt(), "bitmapId", null, 0, 1, StatemachineActionPeripheralPrintRegisterBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintRegisterBitmap_Name(), theEcorePackage.getEString(), "name", null, 0, 1, StatemachineActionPeripheralPrintRegisterBitmap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintNormalEClass, StatemachineActionPeripheralPrintNormal.class, "StatemachineActionPeripheralPrintNormal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintNormal_Device(), this.getStatemachinePeripheralDevicePOSPrinter(), null, "device", null, 0, 1, StatemachineActionPeripheralPrintNormal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPrintNormal_Text(), this.getStatemachineActionFieldConcatenation(), null, "text", null, 0, 1, StatemachineActionPeripheralPrintNormal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintNormal_BarcodeType(), this.getStatemachinePOSPrinterBarcodeType(), "barcodeType", null, 0, 1, StatemachineActionPeripheralPrintNormal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTOpenEClass, StatemachineActionPeripheralPTOpen.class, "StatemachineActionPeripheralPTOpen", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTOpen_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTOpen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTOpen_Host(), this.getStatemachineActionFieldConcatenation(), null, "host", null, 0, 1, StatemachineActionPeripheralPTOpen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTOpen_Port(), this.getStatemachineActionFieldConcatenation(), null, "port", null, 0, 1, StatemachineActionPeripheralPTOpen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTCloseEClass, StatemachineActionPeripheralPTClose.class, "StatemachineActionPeripheralPTClose", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTClose_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTClose.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTReversalEClass, StatemachineActionPeripheralPTReversal.class, "StatemachineActionPeripheralPTReversal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTReversal_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTReversal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTReversal_Password(), this.getStatemachineActionFieldConcatenation(), null, "password", null, 0, 1, StatemachineActionPeripheralPTReversal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTReversal_Receipt(), this.getStatemachineActionFieldConcatenation(), null, "receipt", null, 0, 1, StatemachineActionPeripheralPTReversal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTAcknowledgeEClass, StatemachineActionPeripheralPTAcknowledge.class, "StatemachineActionPeripheralPTAcknowledge", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTAcknowledge_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTAcknowledge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTRegistrationEClass, StatemachineActionPeripheralPTRegistration.class, "StatemachineActionPeripheralPTRegistration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTRegistration_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTRegistration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTRegistration_Password(), this.getStatemachineActionFieldConcatenation(), null, "password", null, 0, 1, StatemachineActionPeripheralPTRegistration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPTRegistration_Configuration(), theEcorePackage.getEString(), "configuration", null, 0, 1, StatemachineActionPeripheralPTRegistration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTAuthorizationEClass, StatemachineActionPeripheralPTAuthorization.class, "StatemachineActionPeripheralPTAuthorization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTAuthorization_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTAuthorization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPTAuthorization_Amount(), this.getStatemachineActionFieldConcatenation(), null, "amount", null, 0, 1, StatemachineActionPeripheralPTAuthorization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPTResponseEClass, StatemachineActionPeripheralPTResponse.class, "StatemachineActionPeripheralPTResponse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPTResponse_Device(), this.getStatemachinePeripheralDevicePT(), null, "device", null, 0, 1, StatemachineActionPeripheralPTResponse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionPeripheralPrintReportEClass, StatemachineActionPeripheralPrintReport.class, "StatemachineActionPeripheralPrintReport", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionPeripheralPrintReport_Report(), theReportDSLPackage.getReport(), null, "report", null, 0, 1, StatemachineActionPeripheralPrintReport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionPeripheralPrintReport_Key(), this.getStatemachineStorage(), null, "key", null, 0, 1, StatemachineActionPeripheralPrintReport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionPeripheralPrintReport_HasFilter(), theEcorePackage.getEBoolean(), "hasFilter", null, 0, 1, StatemachineActionPeripheralPrintReport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceEClass, StatemachineActionFieldSource.class, "StatemachineActionFieldSource", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineActionFieldSourceStringEClass, StatemachineActionFieldSourceString.class, "StatemachineActionFieldSourceString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineActionFieldSourceString_Text(), theEcorePackage.getEString(), "text", null, 0, 1, StatemachineActionFieldSourceString.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceNumberEClass, StatemachineActionFieldSourceNumber.class, "StatemachineActionFieldSourceNumber", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineActionFieldSourceNumber_Value(), theEcorePackage.getEDoubleObject(), "value", null, 0, 1, StatemachineActionFieldSourceNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceEvaluateEClass, StatemachineActionFieldSourceEvaluate.class, "StatemachineActionFieldSourceEvaluate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineActionFieldSourceEvaluate_Evaluationtype(), this.getStatemachineEvaluationType(), "evaluationtype", null, 0, 1, StatemachineActionFieldSourceEvaluate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceTranslateEClass, StatemachineActionFieldSourceTranslate.class, "StatemachineActionFieldSourceTranslate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineActionFieldSourceTranslate_Text(), theEcorePackage.getEString(), "text", null, 0, 1, StatemachineActionFieldSourceTranslate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceDtoAttributeEClass, StatemachineActionFieldSourceDtoAttribute.class, "StatemachineActionFieldSourceDtoAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldSourceDtoAttribute_Dto(), this.getStatemachineControlDTOAttribute(), null, "dto", null, 0, 1, StatemachineActionFieldSourceDtoAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionFieldSourceDtoAttribute_Attribute(), theOSBPDtoPackage.getLDtoInheritedAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldSourceDtoAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSourceEventEClass, StatemachineActionFieldSourceEvent.class, "StatemachineActionFieldSourceEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(statemachineActionConditionalTransitionEClass, StatemachineActionConditionalTransition.class, "StatemachineActionConditionalTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionConditionalTransition_Transition(), this.getStatemachineState(), null, "transition", null, 0, 1, StatemachineActionConditionalTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionConditionalTransition_Guard(), this.getStatemachineGuard(), null, "guard", null, 0, 1, StatemachineActionConditionalTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionConditionalTransition_Actions(), this.getStatemachineAction(), null, "actions", null, 0, -1, StatemachineActionConditionalTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineOperationParameterEClass, StatemachineOperationParameter.class, "StatemachineOperationParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineOperationParameter_Source(), this.getStatemachineActionFieldConcatenation(), null, "source", null, 0, 1, StatemachineOperationParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineOperationEClass, StatemachineOperation.class, "StatemachineOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineOperation_Operation(), theFunctionLibraryDSLPackage.getFunctionLibraryOperation(), null, "operation", null, 0, 1, StatemachineOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineOperation_First(), this.getStatemachineOperationParameter(), null, "first", null, 0, 1, StatemachineOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineOperation_More(), this.getStatemachineOperationParameter(), null, "more", null, 0, -1, StatemachineOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineGuardEClass, StatemachineGuard.class, "StatemachineGuard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineGuard_Guard(), theFunctionLibraryDSLPackage.getFunctionLibraryGuard(), null, "guard", null, 0, 1, StatemachineGuard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineGuard_HasOnFail(), theEcorePackage.getEBoolean(), "hasOnFail", null, 0, 1, StatemachineGuard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineGuard_OnFailDescription(), theEcorePackage.getEString(), "onFailDescription", null, 0, 1, StatemachineGuard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineGuard_OnFailCaption(), theEcorePackage.getEString(), "onFailCaption", null, 0, 1, StatemachineGuard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineGuard_OnFailType(), this.getStatemachineUserMessageType(), "onFailType", null, 0, 1, StatemachineGuard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineFunctionEClass, StatemachineFunction.class, "StatemachineFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineFunction_Function(), theFunctionLibraryDSLPackage.getFunctionLibraryFunction(), null, "function", null, 0, 1, StatemachineFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineFunction_First(), this.getStatemachineOperationParameter(), null, "first", null, 0, 1, StatemachineFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineFunction_More(), this.getStatemachineOperationParameter(), null, "more", null, 0, -1, StatemachineFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineStorageRetrieveEClass, StatemachineStorageRetrieve.class, "StatemachineStorageRetrieve", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineStorageRetrieve_Key(), theEcorePackage.getEString(), "key", null, 0, 1, StatemachineStorageRetrieve.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineStorageRetrieve_Attribute(), theEcorePackage.getEString(), "attribute", null, 0, 1, StatemachineStorageRetrieve.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineStorageEClass, StatemachineStorage.class, "StatemachineStorage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineStorage_Key(), theEcorePackage.getEString(), "key", null, 0, 1, StatemachineStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineStorage_Attribute(), theEcorePackage.getEString(), "attribute", null, 0, 1, StatemachineStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineStorage_Content(), this.getStatemachineActionFieldConcatenation(), null, "content", null, 0, 1, StatemachineStorage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldConcatenationEClass, StatemachineActionFieldConcatenation.class, "StatemachineActionFieldConcatenation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldConcatenation_First(), this.getStatemachineActionFieldSource(), null, "first", null, 0, 1, StatemachineActionFieldConcatenation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionFieldConcatenation_More(), this.getStatemachineActionFieldSource(), null, "more", null, 0, -1, StatemachineActionFieldConcatenation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldSetEClass, StatemachineActionFieldSet.class, "StatemachineActionFieldSet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldSet_Attribute(), this.getStatemachineControlFieldAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionFieldSet_Source(), this.getStatemachineActionFieldConcatenation(), null, "source", null, 0, 1, StatemachineActionFieldSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldKeystrokeEClass, StatemachineActionFieldKeystroke.class, "StatemachineActionFieldKeystroke", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldKeystroke_Attribute(), this.getStatemachineControlFieldAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldKeystroke.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionFieldKeystroke_Keystroke(), theEcorePackage.getEString(), "keystroke", null, 0, 1, StatemachineActionFieldKeystroke.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldClearEClass, StatemachineActionFieldClear.class, "StatemachineActionFieldClear", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldClear_Attribute(), this.getStatemachineControlFieldAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldClear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldGetEClass, StatemachineActionFieldGet.class, "StatemachineActionFieldGet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldGet_Attribute(), this.getStatemachineControlFieldAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldGet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionFieldRemoveEClass, StatemachineActionFieldRemove.class, "StatemachineActionFieldRemove", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionFieldRemove_Attribute(), this.getStatemachineControlFieldAttribute(), null, "attribute", null, 0, 1, StatemachineActionFieldRemove.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionItemVisibleEClass, StatemachineActionItemVisible.class, "StatemachineActionItemVisible", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionItemVisible_Attribute(), this.getStatemachineControlVisibility(), null, "attribute", null, 0, 1, StatemachineActionItemVisible.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionItemInvisibleEClass, StatemachineActionItemInvisible.class, "StatemachineActionItemInvisible", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionItemInvisible_Attribute(), this.getStatemachineControlVisibility(), null, "attribute", null, 0, 1, StatemachineActionItemInvisible.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionButtonCaptionEClass, StatemachineActionButtonCaption.class, "StatemachineActionButtonCaption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionButtonCaption_Attribute(), this.getStatemachineControlButtonAttribute(), null, "attribute", null, 0, 1, StatemachineActionButtonCaption.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionButtonCaption_Caption(), this.getStatemachineActionFieldConcatenation(), null, "caption", null, 0, 1, StatemachineActionButtonCaption.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionButtonImageEClass, StatemachineActionButtonImage.class, "StatemachineActionButtonImage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionButtonImage_Attribute(), this.getStatemachineControlButtonAttribute(), null, "attribute", null, 0, 1, StatemachineActionButtonImage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStatemachineActionButtonImage_Image(), theEcorePackage.getEString(), "image", null, 0, 1, StatemachineActionButtonImage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionDTOFindEClass, StatemachineActionDTOFind.class, "StatemachineActionDTOFind", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionDTOFind_Dto(), this.getStatemachineControlDTOAttribute(), null, "dto", null, 0, 1, StatemachineActionDTOFind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionDTOFind_Attribute(), theOSBPDtoPackage.getLDtoInheritedAttribute(), null, "attribute", null, 0, 1, StatemachineActionDTOFind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStatemachineActionDTOFind_Search(), this.getStatemachineActionFieldConcatenation(), null, "search", null, 0, 1, StatemachineActionDTOFind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineActionSchedulerEClass, StatemachineActionScheduler.class, "StatemachineActionScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineActionScheduler_Scheduler(), this.getStatemachineControlSchedulerAttribute(), null, "scheduler", null, 0, 1, StatemachineActionScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineDTOTypeEClass, StatemachineDTOType.class, "StatemachineDTOType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStatemachineDTOType_AttributeType(), theOSBPDtoPackage.getLDto(), null, "attributeType", null, 0, 1, StatemachineDTOType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(statemachineFieldTypeEClass, StatemachineFieldType.class, "StatemachineFieldType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStatemachineFieldType_AttributeType(), this.getStatemachineInternalType(), "attributeType", null, 0, 1, StatemachineFieldType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(statemachineInternalTypeEEnum, StatemachineInternalType.class, "StatemachineInternalType");
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.BOOLEAN);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.INTEGER);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.LONG);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.DOUBLE);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.STRING);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.DATE);
+		addEEnumLiteral(statemachineInternalTypeEEnum, StatemachineInternalType.SUGGESTTEXT);
+
+		initEEnum(statemachineControlButtonEventTypeEEnum, StatemachineControlButtonEventType.class, "StatemachineControlButtonEventType");
+		addEEnumLiteral(statemachineControlButtonEventTypeEEnum, StatemachineControlButtonEventType.KEYBOARD);
+		addEEnumLiteral(statemachineControlButtonEventTypeEEnum, StatemachineControlButtonEventType.TRIGGER);
+		addEEnumLiteral(statemachineControlButtonEventTypeEEnum, StatemachineControlButtonEventType.IDENTITY);
+
+		initEEnum(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.class, "StatemachineEvaluationType");
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.IP_ADDRESS);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.NOW);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_AGENT_INFO);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.IS_TOUCH_DEVICE);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.IS_HTTPS);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.BROWSER_LOCALE);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_NAME);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_PASSWORD);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_EMAIL);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_POSITION);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.USER_PRTSERVICE);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.SCREEN_WIDTH);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.SCREEN_HEIGHT);
+		addEEnumLiteral(statemachineEvaluationTypeEEnum, StatemachineEvaluationType.TRIGGER);
+
+		initEEnum(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.class, "StatemachineUserMessageType");
+		addEEnumLiteral(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.HUMANIZED_MESSAGE);
+		addEEnumLiteral(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.WARNING_MESSAGE);
+		addEEnumLiteral(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.ERROR_MESSAGE);
+		addEEnumLiteral(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.TRAY_NOTIFICATION);
+		addEEnumLiteral(statemachineUserMessageTypeEEnum, StatemachineUserMessageType.ASSISTIVE_NOTIFICATION);
+
+		initEEnum(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.class, "StatemachineLineDisplayCursorType");
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_NONE);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_FIXED);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_BLOCK);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_HALFBLOCK);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_UNDERLINE);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_REVERSE);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_OTHER);
+		addEEnumLiteral(statemachineLineDisplayCursorTypeEEnum, StatemachineLineDisplayCursorType.DISP_CT_BLINK);
+
+		initEEnum(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.class, "StatemachineLineDisplayMarqueeType");
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_NONE);
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_UP);
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_DOWN);
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_LEFT);
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_RIGHT);
+		addEEnumLiteral(statemachineLineDisplayMarqueeTypeEEnum, StatemachineLineDisplayMarqueeType.DISP_MT_INIT);
+
+		initEEnum(statemachineLineDisplayMarqueeFormatEEnum, StatemachineLineDisplayMarqueeFormat.class, "StatemachineLineDisplayMarqueeFormat");
+		addEEnumLiteral(statemachineLineDisplayMarqueeFormatEEnum, StatemachineLineDisplayMarqueeFormat.DISP_MF_WALK);
+		addEEnumLiteral(statemachineLineDisplayMarqueeFormatEEnum, StatemachineLineDisplayMarqueeFormat.DISP_MF_PLACE);
+
+		initEEnum(statemachineLineDisplayTextTypeEEnum, StatemachineLineDisplayTextType.class, "StatemachineLineDisplayTextType");
+		addEEnumLiteral(statemachineLineDisplayTextTypeEEnum, StatemachineLineDisplayTextType.DISP_DT_NORMAL);
+		addEEnumLiteral(statemachineLineDisplayTextTypeEEnum, StatemachineLineDisplayTextType.DISP_DT_BLINK);
+		addEEnumLiteral(statemachineLineDisplayTextTypeEEnum, StatemachineLineDisplayTextType.DISP_DT_REVERSE);
+		addEEnumLiteral(statemachineLineDisplayTextTypeEEnum, StatemachineLineDisplayTextType.DISP_DT_BLINK_REVERSE);
+
+		initEEnum(statemachineLineDisplayScrollTextTypeEEnum, StatemachineLineDisplayScrollTextType.class, "StatemachineLineDisplayScrollTextType");
+		addEEnumLiteral(statemachineLineDisplayScrollTextTypeEEnum, StatemachineLineDisplayScrollTextType.DISP_ST_UP);
+		addEEnumLiteral(statemachineLineDisplayScrollTextTypeEEnum, StatemachineLineDisplayScrollTextType.DISP_ST_DOWN);
+		addEEnumLiteral(statemachineLineDisplayScrollTextTypeEEnum, StatemachineLineDisplayScrollTextType.DISP_ST_LEFT);
+		addEEnumLiteral(statemachineLineDisplayScrollTextTypeEEnum, StatemachineLineDisplayScrollTextType.DISP_ST_RIGHT);
+
+		initEEnum(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.class, "StatemachinePOSPrinterBarcodeType");
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCA);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCE);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_JAN8);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_EAN8);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_JAN13);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_EAN13);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_TF);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_ITF);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_CODABAR);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_CODE39);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_CODE93);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_CODE128);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCA_S);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCE_S);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCD1);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCD2);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCD3);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCD4);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPCD5);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_EAN8_S);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_EAN13_S);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_EAN128);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_OCRA);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_OCRB);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_CODE128_PARSED);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_GS1DATABAR);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_GS1DATABAR_E);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_GS1DATABAR_S);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_GS1DATABAR_ES);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_PDF417);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_MAXICODE);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_DATAMATRIX);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_QRCODE);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UQRCODE);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_AZTEC);
+		addEEnumLiteral(statemachinePOSPrinterBarcodeTypeEEnum, StatemachinePOSPrinterBarcodeType.PTR_BCS_UPDF417);
+
+		// 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", "statemachinedsl"
+		   });
+	}
+
+} //StatemachineDSLPackageImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDTOTypeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDTOTypeImpl.java
new file mode 100644
index 0000000..e732815
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineDTOTypeImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine DTO Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineDTOTypeImpl#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineDTOTypeImpl extends StatemachineLazyResolverImpl implements StatemachineDTOType {
+	/**
+	 * The cached value of the '{@link #getAttributeType() <em>Attribute Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto attributeType;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineDTOTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_DTO_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getAttributeType() {
+		if (attributeType != null && attributeType.eIsProxy()) {
+			InternalEObject oldAttributeType = (InternalEObject)attributeType;
+			attributeType = (LDto)eResolveProxy(oldAttributeType);
+			if (attributeType != oldAttributeType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE, oldAttributeType, attributeType));
+			}
+		}
+		return attributeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetAttributeType() {
+		return attributeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttributeType(LDto newAttributeType) {
+		LDto oldAttributeType = attributeType;
+		attributeType = newAttributeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE, oldAttributeType, attributeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE:
+				if (resolve) return getAttributeType();
+				return basicGetAttributeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE:
+				setAttributeType((LDto)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE:
+				setAttributeType((LDto)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE:
+				return attributeType != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineDTOTypeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineEventImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineEventImpl.java
new file mode 100644
index 0000000..1fc0636
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineEventImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineEventImpl extends StatemachineBaseImpl implements StatemachineEvent {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_EVENT;
+	}
+
+} //StatemachineEventImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFieldTypeImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFieldTypeImpl.java
new file mode 100644
index 0000000..2c909d7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFieldTypeImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Field Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFieldTypeImpl#getAttributeType <em>Attribute Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineFieldTypeImpl extends StatemachineLazyResolverImpl implements StatemachineFieldType {
+	/**
+	 * The default value of the '{@link #getAttributeType() <em>Attribute Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineInternalType ATTRIBUTE_TYPE_EDEFAULT = StatemachineInternalType.BOOLEAN;
+
+	/**
+	 * The cached value of the '{@link #getAttributeType() <em>Attribute Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineInternalType attributeType = ATTRIBUTE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineFieldTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_FIELD_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineInternalType getAttributeType() {
+		return attributeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttributeType(StatemachineInternalType newAttributeType) {
+		StatemachineInternalType oldAttributeType = attributeType;
+		attributeType = newAttributeType == null ? ATTRIBUTE_TYPE_EDEFAULT : newAttributeType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE, oldAttributeType, attributeType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE:
+				return getAttributeType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE:
+				setAttributeType((StatemachineInternalType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE:
+				setAttributeType(ATTRIBUTE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE:
+				return attributeType != ATTRIBUTE_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(" (attributeType: ");
+		result.append(attributeType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineFieldTypeImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFunctionImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFunctionImpl.java
new file mode 100644
index 0000000..1e33a37
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineFunctionImpl.java
@@ -0,0 +1,292 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.functionlibrarydsl.FunctionLibraryFunction;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFunction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineFunctionImpl#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineFunctionImpl extends StatemachineLazyResolverImpl implements StatemachineFunction {
+	/**
+	 * The cached value of the '{@link #getFunction() <em>Function</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryFunction function;
+
+	/**
+	 * The cached value of the '{@link #getFirst() <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFirst()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineOperationParameter first;
+
+	/**
+	 * The cached value of the '{@link #getMore() <em>More</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMore()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineOperationParameter> more;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryFunction getFunction() {
+		if (function != null && function.eIsProxy()) {
+			InternalEObject oldFunction = (InternalEObject)function;
+			function = (FunctionLibraryFunction)eResolveProxy(oldFunction);
+			if (function != oldFunction) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION, oldFunction, function));
+			}
+		}
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryFunction basicGetFunction() {
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunction(FunctionLibraryFunction newFunction) {
+		FunctionLibraryFunction oldFunction = function;
+		function = newFunction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION, oldFunction, function));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperationParameter getFirst() {
+		return first;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFirst(StatemachineOperationParameter newFirst, NotificationChain msgs) {
+		StatemachineOperationParameter oldFirst = first;
+		first = newFirst;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST, oldFirst, newFirst);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFirst(StatemachineOperationParameter newFirst) {
+		if (newFirst != first) {
+			NotificationChain msgs = null;
+			if (first != null)
+				msgs = ((InternalEObject)first).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST, null, msgs);
+			if (newFirst != null)
+				msgs = ((InternalEObject)newFirst).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST, null, msgs);
+			msgs = basicSetFirst(newFirst, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST, newFirst, newFirst));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineOperationParameter> getMore() {
+		if (more == null) {
+			more = new EObjectContainmentEList<StatemachineOperationParameter>(StatemachineOperationParameter.class, this, StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE);
+		}
+		return more;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST:
+				return basicSetFirst(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE:
+				return ((InternalEList<?>)getMore()).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 StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION:
+				if (resolve) return getFunction();
+				return basicGetFunction();
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST:
+				return getFirst();
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE:
+				return getMore();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION:
+				setFunction((FunctionLibraryFunction)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST:
+				setFirst((StatemachineOperationParameter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE:
+				getMore().clear();
+				getMore().addAll((Collection<? extends StatemachineOperationParameter>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION:
+				setFunction((FunctionLibraryFunction)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST:
+				setFirst((StatemachineOperationParameter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE:
+				getMore().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FUNCTION:
+				return function != null;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__FIRST:
+				return first != null;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION__MORE:
+				return more != null && !more.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineFunctionImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineGuardImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineGuardImpl.java
new file mode 100644
index 0000000..aeda155
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineGuardImpl.java
@@ -0,0 +1,399 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Guard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl#getGuard <em>Guard</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl#isHasOnFail <em>Has On Fail</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl#getOnFailDescription <em>On Fail Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl#getOnFailCaption <em>On Fail Caption</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineGuardImpl#getOnFailType <em>On Fail Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineGuardImpl extends StatemachineLazyResolverImpl implements StatemachineGuard {
+	/**
+	 * The cached value of the '{@link #getGuard() <em>Guard</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGuard()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryGuard guard;
+
+	/**
+	 * The default value of the '{@link #isHasOnFail() <em>Has On Fail</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasOnFail()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_ON_FAIL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasOnFail() <em>Has On Fail</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasOnFail()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasOnFail = HAS_ON_FAIL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOnFailDescription() <em>On Fail Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ON_FAIL_DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOnFailDescription() <em>On Fail Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String onFailDescription = ON_FAIL_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOnFailCaption() <em>On Fail Caption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailCaption()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ON_FAIL_CAPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOnFailCaption() <em>On Fail Caption</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailCaption()
+	 * @generated
+	 * @ordered
+	 */
+	protected String onFailCaption = ON_FAIL_CAPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOnFailType() <em>On Fail Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final StatemachineUserMessageType ON_FAIL_TYPE_EDEFAULT = StatemachineUserMessageType.HUMANIZED_MESSAGE;
+
+	/**
+	 * The cached value of the '{@link #getOnFailType() <em>On Fail Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailType()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineUserMessageType onFailType = ON_FAIL_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineGuardImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_GUARD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryGuard getGuard() {
+		if (guard != null && guard.eIsProxy()) {
+			InternalEObject oldGuard = (InternalEObject)guard;
+			guard = (FunctionLibraryGuard)eResolveProxy(oldGuard);
+			if (guard != oldGuard) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD, oldGuard, guard));
+			}
+		}
+		return guard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryGuard basicGetGuard() {
+		return guard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGuard(FunctionLibraryGuard newGuard) {
+		FunctionLibraryGuard oldGuard = guard;
+		guard = newGuard;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD, oldGuard, guard));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasOnFail() {
+		return hasOnFail;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasOnFail(boolean newHasOnFail) {
+		boolean oldHasOnFail = hasOnFail;
+		hasOnFail = newHasOnFail;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_GUARD__HAS_ON_FAIL, oldHasOnFail, hasOnFail));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOnFailDescription() {
+		return onFailDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnFailDescription(String newOnFailDescription) {
+		String oldOnFailDescription = onFailDescription;
+		onFailDescription = newOnFailDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION, oldOnFailDescription, onFailDescription));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOnFailCaption() {
+		return onFailCaption;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnFailCaption(String newOnFailCaption) {
+		String oldOnFailCaption = onFailCaption;
+		onFailCaption = newOnFailCaption;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_CAPTION, oldOnFailCaption, onFailCaption));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineUserMessageType getOnFailType() {
+		return onFailType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnFailType(StatemachineUserMessageType newOnFailType) {
+		StatemachineUserMessageType oldOnFailType = onFailType;
+		onFailType = newOnFailType == null ? ON_FAIL_TYPE_EDEFAULT : newOnFailType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_TYPE, oldOnFailType, onFailType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD:
+				if (resolve) return getGuard();
+				return basicGetGuard();
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__HAS_ON_FAIL:
+				return isHasOnFail();
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION:
+				return getOnFailDescription();
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_CAPTION:
+				return getOnFailCaption();
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_TYPE:
+				return getOnFailType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD:
+				setGuard((FunctionLibraryGuard)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__HAS_ON_FAIL:
+				setHasOnFail((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION:
+				setOnFailDescription((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_CAPTION:
+				setOnFailCaption((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_TYPE:
+				setOnFailType((StatemachineUserMessageType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD:
+				setGuard((FunctionLibraryGuard)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__HAS_ON_FAIL:
+				setHasOnFail(HAS_ON_FAIL_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION:
+				setOnFailDescription(ON_FAIL_DESCRIPTION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_CAPTION:
+				setOnFailCaption(ON_FAIL_CAPTION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_TYPE:
+				setOnFailType(ON_FAIL_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__GUARD:
+				return guard != null;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__HAS_ON_FAIL:
+				return hasOnFail != HAS_ON_FAIL_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_DESCRIPTION:
+				return ON_FAIL_DESCRIPTION_EDEFAULT == null ? onFailDescription != null : !ON_FAIL_DESCRIPTION_EDEFAULT.equals(onFailDescription);
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_CAPTION:
+				return ON_FAIL_CAPTION_EDEFAULT == null ? onFailCaption != null : !ON_FAIL_CAPTION_EDEFAULT.equals(onFailCaption);
+			case StatemachineDSLPackage.STATEMACHINE_GUARD__ON_FAIL_TYPE:
+				return onFailType != ON_FAIL_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(" (hasOnFail: ");
+		result.append(hasOnFail);
+		result.append(", onFailDescription: ");
+		result.append(onFailDescription);
+		result.append(", onFailCaption: ");
+		result.append(onFailCaption);
+		result.append(", onFailType: ");
+		result.append(onFailType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineGuardImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineImpl.java
new file mode 100644
index 0000000..f8d95c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineImpl.java
@@ -0,0 +1,542 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+
+import org.eclipse.osbp.xtext.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControl;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getFunctionGroup <em>Function Group</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getInitialEvent <em>Initial Event</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getInitialState <em>Initial State</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getEvents <em>Events</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getControls <em>Controls</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineImpl#getStates <em>States</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineImpl extends StatemachineBaseImpl implements Statemachine {
+	/**
+	 * 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 cached value of the '{@link #getFunctionGroup() <em>Function Group</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctionGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryStatemachineGroup functionGroup;
+
+	/**
+	 * The cached value of the '{@link #getInitialEvent() <em>Initial Event</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInitialEvent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineEvent initialEvent;
+
+	/**
+	 * The cached value of the '{@link #getInitialState() <em>Initial State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInitialState()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineState initialState;
+
+	/**
+	 * The cached value of the '{@link #getEvents() <em>Events</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvents()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineEvent> events;
+
+	/**
+	 * The cached value of the '{@link #getControls() <em>Controls</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getControls()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineControl> controls;
+
+	/**
+	 * The cached value of the '{@link #getStates() <em>States</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineState> states;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE;
+	}
+
+	/**
+	 * <!-- 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, StatemachineDSLPackage.STATEMACHINE__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, StatemachineDSLPackage.STATEMACHINE__DESCRIPTION_VALUE, oldDescriptionValue, descriptionValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryStatemachineGroup getFunctionGroup() {
+		if (functionGroup != null && functionGroup.eIsProxy()) {
+			InternalEObject oldFunctionGroup = (InternalEObject)functionGroup;
+			functionGroup = (FunctionLibraryStatemachineGroup)eResolveProxy(oldFunctionGroup);
+			if (functionGroup != oldFunctionGroup) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP, oldFunctionGroup, functionGroup));
+			}
+		}
+		return functionGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryStatemachineGroup basicGetFunctionGroup() {
+		return functionGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunctionGroup(FunctionLibraryStatemachineGroup newFunctionGroup) {
+		FunctionLibraryStatemachineGroup oldFunctionGroup = functionGroup;
+		functionGroup = newFunctionGroup;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP, oldFunctionGroup, functionGroup));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent getInitialEvent() {
+		if (initialEvent != null && initialEvent.eIsProxy()) {
+			InternalEObject oldInitialEvent = (InternalEObject)initialEvent;
+			initialEvent = (StatemachineEvent)eResolveProxy(oldInitialEvent);
+			if (initialEvent != oldInitialEvent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT, oldInitialEvent, initialEvent));
+			}
+		}
+		return initialEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineEvent basicGetInitialEvent() {
+		return initialEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInitialEvent(StatemachineEvent newInitialEvent) {
+		StatemachineEvent oldInitialEvent = initialEvent;
+		initialEvent = newInitialEvent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT, oldInitialEvent, initialEvent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState getInitialState() {
+		if (initialState != null && initialState.eIsProxy()) {
+			InternalEObject oldInitialState = (InternalEObject)initialState;
+			initialState = (StatemachineState)eResolveProxy(oldInitialState);
+			if (initialState != oldInitialState) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE, oldInitialState, initialState));
+			}
+		}
+		return initialState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState basicGetInitialState() {
+		return initialState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInitialState(StatemachineState newInitialState) {
+		StatemachineState oldInitialState = initialState;
+		initialState = newInitialState;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE, oldInitialState, initialState));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineEvent> getEvents() {
+		if (events == null) {
+			events = new EObjectContainmentEList<StatemachineEvent>(StatemachineEvent.class, this, StatemachineDSLPackage.STATEMACHINE__EVENTS);
+		}
+		return events;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineControl> getControls() {
+		if (controls == null) {
+			controls = new EObjectContainmentEList<StatemachineControl>(StatemachineControl.class, this, StatemachineDSLPackage.STATEMACHINE__CONTROLS);
+		}
+		return controls;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineState> getStates() {
+		if (states == null) {
+			states = new EObjectContainmentEList<StatemachineState>(StatemachineState.class, this, StatemachineDSLPackage.STATEMACHINE__STATES);
+		}
+		return states;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE__EVENTS:
+				return ((InternalEList<?>)getEvents()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE__CONTROLS:
+				return ((InternalEList<?>)getControls()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE__STATES:
+				return ((InternalEList<?>)getStates()).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 StatemachineDSLPackage.STATEMACHINE__DESCRIPTION:
+				return isDescription();
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION_VALUE:
+				return getDescriptionValue();
+			case StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP:
+				if (resolve) return getFunctionGroup();
+				return basicGetFunctionGroup();
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT:
+				if (resolve) return getInitialEvent();
+				return basicGetInitialEvent();
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE:
+				if (resolve) return getInitialState();
+				return basicGetInitialState();
+			case StatemachineDSLPackage.STATEMACHINE__EVENTS:
+				return getEvents();
+			case StatemachineDSLPackage.STATEMACHINE__CONTROLS:
+				return getControls();
+			case StatemachineDSLPackage.STATEMACHINE__STATES:
+				return getStates();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE__DESCRIPTION:
+				setDescription((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION_VALUE:
+				setDescriptionValue((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP:
+				setFunctionGroup((FunctionLibraryStatemachineGroup)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT:
+				setInitialEvent((StatemachineEvent)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE:
+				setInitialState((StatemachineState)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__EVENTS:
+				getEvents().clear();
+				getEvents().addAll((Collection<? extends StatemachineEvent>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__CONTROLS:
+				getControls().clear();
+				getControls().addAll((Collection<? extends StatemachineControl>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__STATES:
+				getStates().clear();
+				getStates().addAll((Collection<? extends StatemachineState>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION_VALUE:
+				setDescriptionValue(DESCRIPTION_VALUE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP:
+				setFunctionGroup((FunctionLibraryStatemachineGroup)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT:
+				setInitialEvent((StatemachineEvent)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE:
+				setInitialState((StatemachineState)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__EVENTS:
+				getEvents().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__CONTROLS:
+				getControls().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE__STATES:
+				getStates().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION:
+				return description != DESCRIPTION_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE__DESCRIPTION_VALUE:
+				return DESCRIPTION_VALUE_EDEFAULT == null ? descriptionValue != null : !DESCRIPTION_VALUE_EDEFAULT.equals(descriptionValue);
+			case StatemachineDSLPackage.STATEMACHINE__FUNCTION_GROUP:
+				return functionGroup != null;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_EVENT:
+				return initialEvent != null;
+			case StatemachineDSLPackage.STATEMACHINE__INITIAL_STATE:
+				return initialState != null;
+			case StatemachineDSLPackage.STATEMACHINE__EVENTS:
+				return events != null && !events.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE__CONTROLS:
+				return controls != null && !controls.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE__STATES:
+				return states != null && !states.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(" (description: ");
+		result.append(description);
+		result.append(", descriptionValue: ");
+		result.append(descriptionValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineLazyResolverImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineLazyResolverImpl.java
new file mode 100644
index 0000000..4af3401
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineLazyResolverImpl.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineLazyResolverImpl extends MinimalEObjectImpl.Container implements StatemachineLazyResolver {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineLazyResolverImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //StatemachineLazyResolverImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineModelImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineModelImpl.java
new file mode 100644
index 0000000..aacc1d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineModelImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineModel;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineModelImpl extends MinimalEObjectImpl.Container implements StatemachineModel {
+	/**
+	 * 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<StatemachinePackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachinePackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<StatemachinePackage>(StatemachinePackage.class, this, StatemachineDSLPackage.STATEMACHINE_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_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 StatemachineDSLPackage.STATEMACHINE_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends StatemachinePackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineModelImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationImpl.java
new file mode 100644
index 0000000..6cf2c38
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationImpl.java
@@ -0,0 +1,292 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.functionlibrarydsl.FunctionLibraryOperation;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl#getOperation <em>Operation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl#getFirst <em>First</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationImpl#getMore <em>More</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineOperationImpl extends StatemachineLazyResolverImpl implements StatemachineOperation {
+	/**
+	 * The cached value of the '{@link #getOperation() <em>Operation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperation()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryOperation operation;
+
+	/**
+	 * The cached value of the '{@link #getFirst() <em>First</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFirst()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineOperationParameter first;
+
+	/**
+	 * The cached value of the '{@link #getMore() <em>More</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMore()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineOperationParameter> more;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryOperation getOperation() {
+		if (operation != null && operation.eIsProxy()) {
+			InternalEObject oldOperation = (InternalEObject)operation;
+			operation = (FunctionLibraryOperation)eResolveProxy(oldOperation);
+			if (operation != oldOperation) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION, oldOperation, operation));
+			}
+		}
+		return operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryOperation basicGetOperation() {
+		return operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperation(FunctionLibraryOperation newOperation) {
+		FunctionLibraryOperation oldOperation = operation;
+		operation = newOperation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION, oldOperation, operation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperationParameter getFirst() {
+		return first;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFirst(StatemachineOperationParameter newFirst, NotificationChain msgs) {
+		StatemachineOperationParameter oldFirst = first;
+		first = newFirst;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST, oldFirst, newFirst);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFirst(StatemachineOperationParameter newFirst) {
+		if (newFirst != first) {
+			NotificationChain msgs = null;
+			if (first != null)
+				msgs = ((InternalEObject)first).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST, null, msgs);
+			if (newFirst != null)
+				msgs = ((InternalEObject)newFirst).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST, null, msgs);
+			msgs = basicSetFirst(newFirst, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST, newFirst, newFirst));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineOperationParameter> getMore() {
+		if (more == null) {
+			more = new EObjectContainmentEList<StatemachineOperationParameter>(StatemachineOperationParameter.class, this, StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE);
+		}
+		return more;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST:
+				return basicSetFirst(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE:
+				return ((InternalEList<?>)getMore()).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 StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION:
+				if (resolve) return getOperation();
+				return basicGetOperation();
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST:
+				return getFirst();
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE:
+				return getMore();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION:
+				setOperation((FunctionLibraryOperation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST:
+				setFirst((StatemachineOperationParameter)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE:
+				getMore().clear();
+				getMore().addAll((Collection<? extends StatemachineOperationParameter>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION:
+				setOperation((FunctionLibraryOperation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST:
+				setFirst((StatemachineOperationParameter)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE:
+				getMore().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__OPERATION:
+				return operation != null;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__FIRST:
+				return first != null;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION__MORE:
+				return more != null && !more.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineOperationImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationParameterImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationParameterImpl.java
new file mode 100644
index 0000000..7cf8c0c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineOperationParameterImpl.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Operation Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineOperationParameterImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineOperationParameterImpl extends StatemachineLazyResolverImpl implements StatemachineOperationParameter {
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation source;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineOperationParameterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION_PARAMETER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSource(StatemachineActionFieldConcatenation newSource, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldSource = source;
+		source = newSource;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE, oldSource, newSource);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSource(StatemachineActionFieldConcatenation newSource) {
+		if (newSource != source) {
+			NotificationChain msgs = null;
+			if (source != null)
+				msgs = ((InternalEObject)source).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE, null, msgs);
+			if (newSource != null)
+				msgs = ((InternalEObject)newSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE, null, msgs);
+			msgs = basicSetSource(newSource, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE, newSource, newSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__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 StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__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 StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE:
+				setSource((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE:
+				setSource((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER__SOURCE:
+				return source != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachineOperationParameterImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePackageImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePackageImpl.java
new file mode 100644
index 0000000..792c2d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePackageImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachinePackageImpl#getStatemachines <em>Statemachines</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachinePackageImpl extends LPackageImpl implements StatemachinePackage {
+	/**
+	 * The cached value of the '{@link #getStatemachines() <em>Statemachines</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStatemachines()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Statemachine> statemachines;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachinePackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Statemachine> getStatemachines() {
+		if (statemachines == null) {
+			statemachines = new EObjectContainmentEList<Statemachine>(Statemachine.class, this, StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES);
+		}
+		return statemachines;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES:
+				return ((InternalEList<?>)getStatemachines()).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 StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES:
+				return getStatemachines();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES:
+				getStatemachines().clear();
+				getStatemachines().addAll((Collection<? extends Statemachine>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES:
+				getStatemachines().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE__STATEMACHINES:
+				return statemachines != null && !statemachines.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StatemachinePackageImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceCashDrawerImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceCashDrawerImpl.java
new file mode 100644
index 0000000..bf0969c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceCashDrawerImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Peripheral Device Cash Drawer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachinePeripheralDeviceCashDrawerImpl extends StatemachineBaseImpl implements StatemachinePeripheralDeviceCashDrawer {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachinePeripheralDeviceCashDrawerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER;
+	}
+
+} //StatemachinePeripheralDeviceCashDrawerImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceLineDisplayImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceLineDisplayImpl.java
new file mode 100644
index 0000000..a950b8d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDeviceLineDisplayImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Peripheral Device Line Display</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachinePeripheralDeviceLineDisplayImpl extends StatemachineBaseImpl implements StatemachinePeripheralDeviceLineDisplay {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachinePeripheralDeviceLineDisplayImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY;
+	}
+
+} //StatemachinePeripheralDeviceLineDisplayImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePOSPrinterImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePOSPrinterImpl.java
new file mode 100644
index 0000000..f155c99
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePOSPrinterImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Peripheral Device POS Printer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachinePeripheralDevicePOSPrinterImpl extends StatemachineBaseImpl implements StatemachinePeripheralDevicePOSPrinter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachinePeripheralDevicePOSPrinterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER;
+	}
+
+} //StatemachinePeripheralDevicePOSPrinterImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePTImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePTImpl.java
new file mode 100644
index 0000000..a095b87
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachinePeripheralDevicePTImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Peripheral Device PT</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachinePeripheralDevicePTImpl extends StatemachineBaseImpl implements StatemachinePeripheralDevicePT {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachinePeripheralDevicePTImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_PERIPHERAL_DEVICE_PT;
+	}
+
+} //StatemachinePeripheralDevicePTImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStateImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStateImpl.java
new file mode 100644
index 0000000..9ad7f6a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStateImpl.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl#getTriggers <em>Triggers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl#getIdentity <em>Identity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl#getKeystroke <em>Keystroke</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl#isHasKeyOperation <em>Has Key Operation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStateImpl#getKeyOperation <em>Key Operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineStateImpl extends StatemachineBaseImpl implements StatemachineState {
+	/**
+	 * The cached value of the '{@link #getTriggers() <em>Triggers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTriggers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineTrigger> triggers;
+
+	/**
+	 * The cached value of the '{@link #getIdentity() <em>Identity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIdentity()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineOperation identity;
+
+	/**
+	 * The cached value of the '{@link #getKeystroke() <em>Keystroke</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeystroke()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineControlFieldAttribute keystroke;
+
+	/**
+	 * The default value of the '{@link #isHasKeyOperation() <em>Has Key Operation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasKeyOperation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_KEY_OPERATION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasKeyOperation() <em>Has Key Operation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasKeyOperation()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasKeyOperation = HAS_KEY_OPERATION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getKeyOperation() <em>Key Operation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeyOperation()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineOperation keyOperation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineStateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_STATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineTrigger> getTriggers() {
+		if (triggers == null) {
+			triggers = new EObjectContainmentEList<StatemachineTrigger>(StatemachineTrigger.class, this, StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS);
+		}
+		return triggers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperation getIdentity() {
+		return identity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIdentity(StatemachineOperation newIdentity, NotificationChain msgs) {
+		StatemachineOperation oldIdentity = identity;
+		identity = newIdentity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY, oldIdentity, newIdentity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIdentity(StatemachineOperation newIdentity) {
+		if (newIdentity != identity) {
+			NotificationChain msgs = null;
+			if (identity != null)
+				msgs = ((InternalEObject)identity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY, null, msgs);
+			if (newIdentity != null)
+				msgs = ((InternalEObject)newIdentity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY, null, msgs);
+			msgs = basicSetIdentity(newIdentity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY, newIdentity, newIdentity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute getKeystroke() {
+		if (keystroke != null && keystroke.eIsProxy()) {
+			InternalEObject oldKeystroke = (InternalEObject)keystroke;
+			keystroke = (StatemachineControlFieldAttribute)eResolveProxy(oldKeystroke);
+			if (keystroke != oldKeystroke) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE, oldKeystroke, keystroke));
+			}
+		}
+		return keystroke;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineControlFieldAttribute basicGetKeystroke() {
+		return keystroke;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeystroke(StatemachineControlFieldAttribute newKeystroke) {
+		StatemachineControlFieldAttribute oldKeystroke = keystroke;
+		keystroke = newKeystroke;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE, oldKeystroke, keystroke));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasKeyOperation() {
+		return hasKeyOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasKeyOperation(boolean newHasKeyOperation) {
+		boolean oldHasKeyOperation = hasKeyOperation;
+		hasKeyOperation = newHasKeyOperation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__HAS_KEY_OPERATION, oldHasKeyOperation, hasKeyOperation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineOperation getKeyOperation() {
+		return keyOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetKeyOperation(StatemachineOperation newKeyOperation, NotificationChain msgs) {
+		StatemachineOperation oldKeyOperation = keyOperation;
+		keyOperation = newKeyOperation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION, oldKeyOperation, newKeyOperation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeyOperation(StatemachineOperation newKeyOperation) {
+		if (newKeyOperation != keyOperation) {
+			NotificationChain msgs = null;
+			if (keyOperation != null)
+				msgs = ((InternalEObject)keyOperation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION, null, msgs);
+			if (newKeyOperation != null)
+				msgs = ((InternalEObject)newKeyOperation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION, null, msgs);
+			msgs = basicSetKeyOperation(newKeyOperation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION, newKeyOperation, newKeyOperation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS:
+				return ((InternalEList<?>)getTriggers()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY:
+				return basicSetIdentity(null, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION:
+				return basicSetKeyOperation(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 StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS:
+				return getTriggers();
+			case StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY:
+				return getIdentity();
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE:
+				if (resolve) return getKeystroke();
+				return basicGetKeystroke();
+			case StatemachineDSLPackage.STATEMACHINE_STATE__HAS_KEY_OPERATION:
+				return isHasKeyOperation();
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION:
+				return getKeyOperation();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS:
+				getTriggers().clear();
+				getTriggers().addAll((Collection<? extends StatemachineTrigger>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY:
+				setIdentity((StatemachineOperation)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE:
+				setKeystroke((StatemachineControlFieldAttribute)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__HAS_KEY_OPERATION:
+				setHasKeyOperation((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION:
+				setKeyOperation((StatemachineOperation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS:
+				getTriggers().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY:
+				setIdentity((StatemachineOperation)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE:
+				setKeystroke((StatemachineControlFieldAttribute)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__HAS_KEY_OPERATION:
+				setHasKeyOperation(HAS_KEY_OPERATION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION:
+				setKeyOperation((StatemachineOperation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STATE__TRIGGERS:
+				return triggers != null && !triggers.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_STATE__IDENTITY:
+				return identity != null;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEYSTROKE:
+				return keystroke != null;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__HAS_KEY_OPERATION:
+				return hasKeyOperation != HAS_KEY_OPERATION_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_STATE__KEY_OPERATION:
+				return keyOperation != 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(" (hasKeyOperation: ");
+		result.append(hasKeyOperation);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineStateImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageImpl.java
new file mode 100644
index 0000000..7e4b5a7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Storage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageImpl#getContent <em>Content</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineStorageImpl extends StatemachineLazyResolverImpl implements StatemachineStorage {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAttribute() <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ATTRIBUTE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected String attribute = ATTRIBUTE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineActionFieldConcatenation content;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineStorageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(String newAttribute) {
+		String oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineActionFieldConcatenation getContent() {
+		return content;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetContent(StatemachineActionFieldConcatenation newContent, NotificationChain msgs) {
+		StatemachineActionFieldConcatenation oldContent = content;
+		content = newContent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT, oldContent, newContent);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setContent(StatemachineActionFieldConcatenation newContent) {
+		if (newContent != content) {
+			NotificationChain msgs = null;
+			if (content != null)
+				msgs = ((InternalEObject)content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT, null, msgs);
+			if (newContent != null)
+				msgs = ((InternalEObject)newContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT, null, msgs);
+			msgs = basicSetContent(newContent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT, newContent, newContent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT:
+				return basicSetContent(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 StatemachineDSLPackage.STATEMACHINE_STORAGE__KEY:
+				return getKey();
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__ATTRIBUTE:
+				return getAttribute();
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT:
+				return getContent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__KEY:
+				setKey((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__ATTRIBUTE:
+				setAttribute((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT:
+				setContent((StatemachineActionFieldConcatenation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__ATTRIBUTE:
+				setAttribute(ATTRIBUTE_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT:
+				setContent((StatemachineActionFieldConcatenation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__KEY:
+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__ATTRIBUTE:
+				return ATTRIBUTE_EDEFAULT == null ? attribute != null : !ATTRIBUTE_EDEFAULT.equals(attribute);
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE__CONTENT:
+				return content != 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(" (key: ");
+		result.append(key);
+		result.append(", attribute: ");
+		result.append(attribute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineStorageImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageRetrieveImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageRetrieveImpl.java
new file mode 100644
index 0000000..cfa35cf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineStorageRetrieveImpl.java
@@ -0,0 +1,227 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Storage Retrieve</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineStorageRetrieveImpl#getAttribute <em>Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineStorageRetrieveImpl extends StatemachineLazyResolverImpl implements StatemachineStorageRetrieve {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAttribute() <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ATTRIBUTE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected String attribute = ATTRIBUTE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineStorageRetrieveImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(String newAttribute) {
+		String oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__KEY:
+				return getKey();
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE:
+				return getAttribute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__KEY:
+				setKey((String)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE:
+				setAttribute((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE:
+				setAttribute(ATTRIBUTE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__KEY:
+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE:
+				return ATTRIBUTE_EDEFAULT == null ? attribute != null : !ATTRIBUTE_EDEFAULT.equals(attribute);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", attribute: ");
+		result.append(attribute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineStorageRetrieveImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineTriggerImpl.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineTriggerImpl.java
new file mode 100644
index 0000000..909d728
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/impl/StatemachineTriggerImpl.java
@@ -0,0 +1,366 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.statemachine.StatemachineAction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Statemachine Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl#isHasTransition <em>Has Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl#getTransition <em>Transition</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl#getTriggers <em>Triggers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl#getGuards <em>Guards</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.statemachine.impl.StatemachineTriggerImpl#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StatemachineTriggerImpl extends StatemachineLazyResolverImpl implements StatemachineTrigger {
+	/**
+	 * The default value of the '{@link #isHasTransition() <em>Has Transition</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasTransition()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_TRANSITION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasTransition() <em>Has Transition</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasTransition()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasTransition = HAS_TRANSITION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getTransition() <em>Transition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTransition()
+	 * @generated
+	 * @ordered
+	 */
+	protected StatemachineState transition;
+
+	/**
+	 * The cached value of the '{@link #getTriggers() <em>Triggers</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTriggers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineEvent> triggers;
+
+	/**
+	 * The cached value of the '{@link #getGuards() <em>Guards</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGuards()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineGuard> guards;
+
+	/**
+	 * The cached value of the '{@link #getActions() <em>Actions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StatemachineAction> actions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StatemachineTriggerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StatemachineDSLPackage.Literals.STATEMACHINE_TRIGGER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasTransition() {
+		return hasTransition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasTransition(boolean newHasTransition) {
+		boolean oldHasTransition = hasTransition;
+		hasTransition = newHasTransition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_TRIGGER__HAS_TRANSITION, oldHasTransition, hasTransition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState getTransition() {
+		if (transition != null && transition.eIsProxy()) {
+			InternalEObject oldTransition = (InternalEObject)transition;
+			transition = (StatemachineState)eResolveProxy(oldTransition);
+			if (transition != oldTransition) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION, oldTransition, transition));
+			}
+		}
+		return transition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineState basicGetTransition() {
+		return transition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransition(StatemachineState newTransition) {
+		StatemachineState oldTransition = transition;
+		transition = newTransition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION, oldTransition, transition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineEvent> getTriggers() {
+		if (triggers == null) {
+			triggers = new EObjectResolvingEList<StatemachineEvent>(StatemachineEvent.class, this, StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRIGGERS);
+		}
+		return triggers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineGuard> getGuards() {
+		if (guards == null) {
+			guards = new EObjectContainmentEList<StatemachineGuard>(StatemachineGuard.class, this, StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS);
+		}
+		return guards;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StatemachineAction> getActions() {
+		if (actions == null) {
+			actions = new EObjectContainmentEList<StatemachineAction>(StatemachineAction.class, this, StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS);
+		}
+		return actions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS:
+				return ((InternalEList<?>)getGuards()).basicRemove(otherEnd, msgs);
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS:
+				return ((InternalEList<?>)getActions()).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 StatemachineDSLPackage.STATEMACHINE_TRIGGER__HAS_TRANSITION:
+				return isHasTransition();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION:
+				if (resolve) return getTransition();
+				return basicGetTransition();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRIGGERS:
+				return getTriggers();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS:
+				return getGuards();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS:
+				return getActions();
+		}
+		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 StatemachineDSLPackage.STATEMACHINE_TRIGGER__HAS_TRANSITION:
+				setHasTransition((Boolean)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION:
+				setTransition((StatemachineState)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRIGGERS:
+				getTriggers().clear();
+				getTriggers().addAll((Collection<? extends StatemachineEvent>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS:
+				getGuards().clear();
+				getGuards().addAll((Collection<? extends StatemachineGuard>)newValue);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS:
+				getActions().clear();
+				getActions().addAll((Collection<? extends StatemachineAction>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__HAS_TRANSITION:
+				setHasTransition(HAS_TRANSITION_EDEFAULT);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION:
+				setTransition((StatemachineState)null);
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRIGGERS:
+				getTriggers().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS:
+				getGuards().clear();
+				return;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS:
+				getActions().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__HAS_TRANSITION:
+				return hasTransition != HAS_TRANSITION_EDEFAULT;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRANSITION:
+				return transition != null;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__TRIGGERS:
+				return triggers != null && !triggers.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__GUARDS:
+				return guards != null && !guards.isEmpty();
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER__ACTIONS:
+				return actions != null && !actions.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(" (hasTransition: ");
+		result.append(hasTransition);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StatemachineTriggerImpl
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLAdapterFactory.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLAdapterFactory.java
new file mode 100644
index 0000000..2c1963d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLAdapterFactory.java
@@ -0,0 +1,1718 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.*;
+
+/**
+ * <!-- 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.statemachine.StatemachineDSLPackage
+ * @generated
+ */
+public class StatemachineDSLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static StatemachineDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDSLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = StatemachineDSLPackage.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 StatemachineDSLSwitch<Adapter> modelSwitch =
+		new StatemachineDSLSwitch<Adapter>() {
+			@Override
+			public Adapter caseStatemachineModel(StatemachineModel object) {
+				return createStatemachineModelAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineLazyResolver(StatemachineLazyResolver object) {
+				return createStatemachineLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineBase(StatemachineBase object) {
+				return createStatemachineBaseAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePackage(StatemachinePackage object) {
+				return createStatemachinePackageAdapter();
+			}
+			@Override
+			public Adapter caseStatemachine(Statemachine object) {
+				return createStatemachineAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControl(StatemachineControl object) {
+				return createStatemachineControlAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButton(StatemachineControlButton object) {
+				return createStatemachineControlButtonAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlField(StatemachineControlField object) {
+				return createStatemachineControlFieldAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlDTO(StatemachineControlDTO object) {
+				return createStatemachineControlDTOAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlScheduler(StatemachineControlScheduler object) {
+				return createStatemachineControlSchedulerAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlPeripheral(StatemachineControlPeripheral object) {
+				return createStatemachineControlPeripheralAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButtonAttribute(StatemachineControlButtonAttribute object) {
+				return createStatemachineControlButtonAttributeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButtonAttributeEvent(StatemachineControlButtonAttributeEvent object) {
+				return createStatemachineControlButtonAttributeEventAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButtonAttributeEventKeyboard(StatemachineControlButtonAttributeEventKeyboard object) {
+				return createStatemachineControlButtonAttributeEventKeyboardAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButtonAttributeEventIdentity(StatemachineControlButtonAttributeEventIdentity object) {
+				return createStatemachineControlButtonAttributeEventIdentityAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlButtonAttributeEventEvent(StatemachineControlButtonAttributeEventEvent object) {
+				return createStatemachineControlButtonAttributeEventEventAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlVisibility(StatemachineControlVisibility object) {
+				return createStatemachineControlVisibilityAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlFieldAttribute(StatemachineControlFieldAttribute object) {
+				return createStatemachineControlFieldAttributeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlFieldLayout(StatemachineControlFieldLayout object) {
+				return createStatemachineControlFieldLayoutAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlDTOAttribute(StatemachineControlDTOAttribute object) {
+				return createStatemachineControlDTOAttributeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePeripheralDevice(StatemachinePeripheralDevice object) {
+				return createStatemachinePeripheralDeviceAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePeripheralDeviceLineDisplay(StatemachinePeripheralDeviceLineDisplay object) {
+				return createStatemachinePeripheralDeviceLineDisplayAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePeripheralDevicePOSPrinter(StatemachinePeripheralDevicePOSPrinter object) {
+				return createStatemachinePeripheralDevicePOSPrinterAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePeripheralDeviceCashDrawer(StatemachinePeripheralDeviceCashDrawer object) {
+				return createStatemachinePeripheralDeviceCashDrawerAdapter();
+			}
+			@Override
+			public Adapter caseStatemachinePeripheralDevicePT(StatemachinePeripheralDevicePT object) {
+				return createStatemachinePeripheralDevicePTAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineControlSchedulerAttribute(StatemachineControlSchedulerAttribute object) {
+				return createStatemachineControlSchedulerAttributeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineEvent(StatemachineEvent object) {
+				return createStatemachineEventAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineState(StatemachineState object) {
+				return createStatemachineStateAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineTrigger(StatemachineTrigger object) {
+				return createStatemachineTriggerAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineAction(StatemachineAction object) {
+				return createStatemachineActionAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralBlinkRate(StatemachineActionPeripheralBlinkRate object) {
+				return createStatemachineActionPeripheralBlinkRateAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralClear(StatemachineActionPeripheralClear object) {
+				return createStatemachineActionPeripheralClearAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralCreateWindow(StatemachineActionPeripheralCreateWindow object) {
+				return createStatemachineActionPeripheralCreateWindowAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralCursorType(StatemachineActionPeripheralCursorType object) {
+				return createStatemachineActionPeripheralCursorTypeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralDestroyWindow(StatemachineActionPeripheralDestroyWindow object) {
+				return createStatemachineActionPeripheralDestroyWindowAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralDeviceBrightness(StatemachineActionPeripheralDeviceBrightness object) {
+				return createStatemachineActionPeripheralDeviceBrightnessAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralDisplayBitmap(StatemachineActionPeripheralDisplayBitmap object) {
+				return createStatemachineActionPeripheralDisplayBitmapAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralDisplayText(StatemachineActionPeripheralDisplayText object) {
+				return createStatemachineActionPeripheralDisplayTextAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralDisplayTextAt(StatemachineActionPeripheralDisplayTextAt object) {
+				return createStatemachineActionPeripheralDisplayTextAtAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralInterCharacterWait(StatemachineActionPeripheralInterCharacterWait object) {
+				return createStatemachineActionPeripheralInterCharacterWaitAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralMarqueeFormat(StatemachineActionPeripheralMarqueeFormat object) {
+				return createStatemachineActionPeripheralMarqueeFormatAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralMarqueeRepeatWait(StatemachineActionPeripheralMarqueeRepeatWait object) {
+				return createStatemachineActionPeripheralMarqueeRepeatWaitAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralMarqueeType(StatemachineActionPeripheralMarqueeType object) {
+				return createStatemachineActionPeripheralMarqueeTypeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralMarqueeUnitWait(StatemachineActionPeripheralMarqueeUnitWait object) {
+				return createStatemachineActionPeripheralMarqueeUnitWaitAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralScroll(StatemachineActionPeripheralScroll object) {
+				return createStatemachineActionPeripheralScrollAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralOpenDrawer(StatemachineActionPeripheralOpenDrawer object) {
+				return createStatemachineActionPeripheralOpenDrawerAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintBarcode(StatemachineActionPeripheralPrintBarcode object) {
+				return createStatemachineActionPeripheralPrintBarcodeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintBitmap(StatemachineActionPeripheralPrintBitmap object) {
+				return createStatemachineActionPeripheralPrintBitmapAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintCut(StatemachineActionPeripheralPrintCut object) {
+				return createStatemachineActionPeripheralPrintCutAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintRegisterBitmap(StatemachineActionPeripheralPrintRegisterBitmap object) {
+				return createStatemachineActionPeripheralPrintRegisterBitmapAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintNormal(StatemachineActionPeripheralPrintNormal object) {
+				return createStatemachineActionPeripheralPrintNormalAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTOpen(StatemachineActionPeripheralPTOpen object) {
+				return createStatemachineActionPeripheralPTOpenAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTClose(StatemachineActionPeripheralPTClose object) {
+				return createStatemachineActionPeripheralPTCloseAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTReversal(StatemachineActionPeripheralPTReversal object) {
+				return createStatemachineActionPeripheralPTReversalAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTAcknowledge(StatemachineActionPeripheralPTAcknowledge object) {
+				return createStatemachineActionPeripheralPTAcknowledgeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTRegistration(StatemachineActionPeripheralPTRegistration object) {
+				return createStatemachineActionPeripheralPTRegistrationAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTAuthorization(StatemachineActionPeripheralPTAuthorization object) {
+				return createStatemachineActionPeripheralPTAuthorizationAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPTResponse(StatemachineActionPeripheralPTResponse object) {
+				return createStatemachineActionPeripheralPTResponseAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionPeripheralPrintReport(StatemachineActionPeripheralPrintReport object) {
+				return createStatemachineActionPeripheralPrintReportAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSource(StatemachineActionFieldSource object) {
+				return createStatemachineActionFieldSourceAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceString(StatemachineActionFieldSourceString object) {
+				return createStatemachineActionFieldSourceStringAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceNumber(StatemachineActionFieldSourceNumber object) {
+				return createStatemachineActionFieldSourceNumberAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceEvaluate(StatemachineActionFieldSourceEvaluate object) {
+				return createStatemachineActionFieldSourceEvaluateAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceTranslate(StatemachineActionFieldSourceTranslate object) {
+				return createStatemachineActionFieldSourceTranslateAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceDtoAttribute(StatemachineActionFieldSourceDtoAttribute object) {
+				return createStatemachineActionFieldSourceDtoAttributeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSourceEvent(StatemachineActionFieldSourceEvent object) {
+				return createStatemachineActionFieldSourceEventAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionConditionalTransition(StatemachineActionConditionalTransition object) {
+				return createStatemachineActionConditionalTransitionAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineOperationParameter(StatemachineOperationParameter object) {
+				return createStatemachineOperationParameterAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineOperation(StatemachineOperation object) {
+				return createStatemachineOperationAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineGuard(StatemachineGuard object) {
+				return createStatemachineGuardAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineFunction(StatemachineFunction object) {
+				return createStatemachineFunctionAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineStorageRetrieve(StatemachineStorageRetrieve object) {
+				return createStatemachineStorageRetrieveAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineStorage(StatemachineStorage object) {
+				return createStatemachineStorageAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldConcatenation(StatemachineActionFieldConcatenation object) {
+				return createStatemachineActionFieldConcatenationAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldSet(StatemachineActionFieldSet object) {
+				return createStatemachineActionFieldSetAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldKeystroke(StatemachineActionFieldKeystroke object) {
+				return createStatemachineActionFieldKeystrokeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldClear(StatemachineActionFieldClear object) {
+				return createStatemachineActionFieldClearAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldGet(StatemachineActionFieldGet object) {
+				return createStatemachineActionFieldGetAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionFieldRemove(StatemachineActionFieldRemove object) {
+				return createStatemachineActionFieldRemoveAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionItemVisible(StatemachineActionItemVisible object) {
+				return createStatemachineActionItemVisibleAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionItemInvisible(StatemachineActionItemInvisible object) {
+				return createStatemachineActionItemInvisibleAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionButtonCaption(StatemachineActionButtonCaption object) {
+				return createStatemachineActionButtonCaptionAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionButtonImage(StatemachineActionButtonImage object) {
+				return createStatemachineActionButtonImageAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionDTOFind(StatemachineActionDTOFind object) {
+				return createStatemachineActionDTOFindAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineActionScheduler(StatemachineActionScheduler object) {
+				return createStatemachineActionSchedulerAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineDTOType(StatemachineDTOType object) {
+				return createStatemachineDTOTypeAdapter();
+			}
+			@Override
+			public Adapter caseStatemachineFieldType(StatemachineFieldType object) {
+				return createStatemachineFieldTypeAdapter();
+			}
+			@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.statemachine.StatemachineModel <em>Statemachine 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.statemachine.StatemachineModel
+	 * @generated
+	 */
+	public Adapter createStatemachineModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineLazyResolver <em>Statemachine 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.statemachine.StatemachineLazyResolver
+	 * @generated
+	 */
+	public Adapter createStatemachineLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineBase <em>Statemachine 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.statemachine.StatemachineBase
+	 * @generated
+	 */
+	public Adapter createStatemachineBaseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePackage <em>Statemachine 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.statemachine.StatemachinePackage
+	 * @generated
+	 */
+	public Adapter createStatemachinePackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.Statemachine <em>Statemachine</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.statemachine.Statemachine
+	 * @generated
+	 */
+	public Adapter createStatemachineAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControl <em>Statemachine Control</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.statemachine.StatemachineControl
+	 * @generated
+	 */
+	public Adapter createStatemachineControlAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButton <em>Statemachine Control Button</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.statemachine.StatemachineControlButton
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlField <em>Statemachine Control Field</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.statemachine.StatemachineControlField
+	 * @generated
+	 */
+	public Adapter createStatemachineControlFieldAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO <em>Statemachine Control DTO</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO
+	 * @generated
+	 */
+	public Adapter createStatemachineControlDTOAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler <em>Statemachine Control Scheduler</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.statemachine.StatemachineControlScheduler
+	 * @generated
+	 */
+	public Adapter createStatemachineControlSchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral <em>Statemachine Control Peripheral</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.statemachine.StatemachineControlPeripheral
+	 * @generated
+	 */
+	public Adapter createStatemachineControlPeripheralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute <em>Statemachine Control Button Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent <em>Statemachine Control Button Attribute Event</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.statemachine.StatemachineControlButtonAttributeEvent
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAttributeEventAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard <em>Statemachine Control Button Attribute Event Keyboard</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.statemachine.StatemachineControlButtonAttributeEventKeyboard
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAttributeEventKeyboardAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity <em>Statemachine Control Button Attribute Event Identity</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.statemachine.StatemachineControlButtonAttributeEventIdentity
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAttributeEventIdentityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent <em>Statemachine Control Button Attribute Event Event</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.statemachine.StatemachineControlButtonAttributeEventEvent
+	 * @generated
+	 */
+	public Adapter createStatemachineControlButtonAttributeEventEventAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility <em>Statemachine Control Visibility</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.statemachine.StatemachineControlVisibility
+	 * @generated
+	 */
+	public Adapter createStatemachineControlVisibilityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute <em>Statemachine Control Field Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute
+	 * @generated
+	 */
+	public Adapter createStatemachineControlFieldAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout <em>Statemachine Control Field Layout</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.statemachine.StatemachineControlFieldLayout
+	 * @generated
+	 */
+	public Adapter createStatemachineControlFieldLayoutAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute <em>Statemachine Control DTO Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute
+	 * @generated
+	 */
+	public Adapter createStatemachineControlDTOAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevice <em>Statemachine Peripheral Device</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.statemachine.StatemachinePeripheralDevice
+	 * @generated
+	 */
+	public Adapter createStatemachinePeripheralDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay <em>Statemachine Peripheral Device Line Display</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.statemachine.StatemachinePeripheralDeviceLineDisplay
+	 * @generated
+	 */
+	public Adapter createStatemachinePeripheralDeviceLineDisplayAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter <em>Statemachine Peripheral Device POS Printer</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.statemachine.StatemachinePeripheralDevicePOSPrinter
+	 * @generated
+	 */
+	public Adapter createStatemachinePeripheralDevicePOSPrinterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer <em>Statemachine Peripheral Device Cash Drawer</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.statemachine.StatemachinePeripheralDeviceCashDrawer
+	 * @generated
+	 */
+	public Adapter createStatemachinePeripheralDeviceCashDrawerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT <em>Statemachine Peripheral Device PT</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.statemachine.StatemachinePeripheralDevicePT
+	 * @generated
+	 */
+	public Adapter createStatemachinePeripheralDevicePTAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute <em>Statemachine Control Scheduler Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute
+	 * @generated
+	 */
+	public Adapter createStatemachineControlSchedulerAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineEvent <em>Statemachine Event</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.statemachine.StatemachineEvent
+	 * @generated
+	 */
+	public Adapter createStatemachineEventAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineState <em>Statemachine State</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.statemachine.StatemachineState
+	 * @generated
+	 */
+	public Adapter createStatemachineStateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineTrigger <em>Statemachine Trigger</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.statemachine.StatemachineTrigger
+	 * @generated
+	 */
+	public Adapter createStatemachineTriggerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineAction <em>Statemachine Action</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.statemachine.StatemachineAction
+	 * @generated
+	 */
+	public Adapter createStatemachineActionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate <em>Statemachine Action Peripheral Blink Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralBlinkRateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear <em>Statemachine Action Peripheral Clear</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.statemachine.StatemachineActionPeripheralClear
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralClearAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow <em>Statemachine Action Peripheral Create Window</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.statemachine.StatemachineActionPeripheralCreateWindow
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralCreateWindowAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType <em>Statemachine Action Peripheral Cursor Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralCursorTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow <em>Statemachine Action Peripheral Destroy Window</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.statemachine.StatemachineActionPeripheralDestroyWindow
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralDestroyWindowAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness <em>Statemachine Action Peripheral Device Brightness</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.statemachine.StatemachineActionPeripheralDeviceBrightness
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralDeviceBrightnessAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap <em>Statemachine Action Peripheral Display Bitmap</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.statemachine.StatemachineActionPeripheralDisplayBitmap
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralDisplayBitmapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText <em>Statemachine Action Peripheral Display Text</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.statemachine.StatemachineActionPeripheralDisplayText
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralDisplayTextAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt <em>Statemachine Action Peripheral Display Text At</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.statemachine.StatemachineActionPeripheralDisplayTextAt
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralDisplayTextAtAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait <em>Statemachine Action Peripheral Inter Character Wait</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.statemachine.StatemachineActionPeripheralInterCharacterWait
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralInterCharacterWaitAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat <em>Statemachine Action Peripheral Marquee Format</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.statemachine.StatemachineActionPeripheralMarqueeFormat
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralMarqueeFormatAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait <em>Statemachine Action Peripheral Marquee Repeat Wait</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.statemachine.StatemachineActionPeripheralMarqueeRepeatWait
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralMarqueeRepeatWaitAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType <em>Statemachine Action Peripheral Marquee Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralMarqueeTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait <em>Statemachine Action Peripheral Marquee Unit Wait</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.statemachine.StatemachineActionPeripheralMarqueeUnitWait
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralMarqueeUnitWaitAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll <em>Statemachine Action Peripheral Scroll</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.statemachine.StatemachineActionPeripheralScroll
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralScrollAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer <em>Statemachine Action Peripheral Open Drawer</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.statemachine.StatemachineActionPeripheralOpenDrawer
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralOpenDrawerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode <em>Statemachine Action Peripheral Print Barcode</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.statemachine.StatemachineActionPeripheralPrintBarcode
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintBarcodeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap <em>Statemachine Action Peripheral Print Bitmap</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.statemachine.StatemachineActionPeripheralPrintBitmap
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintBitmapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut <em>Statemachine Action Peripheral Print Cut</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.statemachine.StatemachineActionPeripheralPrintCut
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintCutAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap <em>Statemachine Action Peripheral Print Register Bitmap</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.statemachine.StatemachineActionPeripheralPrintRegisterBitmap
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintRegisterBitmapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal <em>Statemachine Action Peripheral Print Normal</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.statemachine.StatemachineActionPeripheralPrintNormal
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintNormalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen <em>Statemachine Action Peripheral PT Open</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.statemachine.StatemachineActionPeripheralPTOpen
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTOpenAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose <em>Statemachine Action Peripheral PT Close</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.statemachine.StatemachineActionPeripheralPTClose
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTCloseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal <em>Statemachine Action Peripheral PT Reversal</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.statemachine.StatemachineActionPeripheralPTReversal
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTReversalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge <em>Statemachine Action Peripheral PT Acknowledge</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.statemachine.StatemachineActionPeripheralPTAcknowledge
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTAcknowledgeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration <em>Statemachine Action Peripheral PT Registration</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.statemachine.StatemachineActionPeripheralPTRegistration
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTRegistrationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization <em>Statemachine Action Peripheral PT Authorization</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.statemachine.StatemachineActionPeripheralPTAuthorization
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTAuthorizationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse <em>Statemachine Action Peripheral PT Response</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.statemachine.StatemachineActionPeripheralPTResponse
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPTResponseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport <em>Statemachine Action Peripheral Print Report</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.statemachine.StatemachineActionPeripheralPrintReport
+	 * @generated
+	 */
+	public Adapter createStatemachineActionPeripheralPrintReportAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource <em>Statemachine Action Field Source</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.statemachine.StatemachineActionFieldSource
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString <em>Statemachine Action Field Source String</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.statemachine.StatemachineActionFieldSourceString
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceStringAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber <em>Statemachine Action Field Source Number</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.statemachine.StatemachineActionFieldSourceNumber
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceNumberAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate <em>Statemachine Action Field Source Evaluate</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.statemachine.StatemachineActionFieldSourceEvaluate
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceEvaluateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate <em>Statemachine Action Field Source Translate</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.statemachine.StatemachineActionFieldSourceTranslate
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceTranslateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute <em>Statemachine Action Field Source Dto Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceDtoAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent <em>Statemachine Action Field Source Event</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.statemachine.StatemachineActionFieldSourceEvent
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSourceEventAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition <em>Statemachine Action Conditional Transition</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.statemachine.StatemachineActionConditionalTransition
+	 * @generated
+	 */
+	public Adapter createStatemachineActionConditionalTransitionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter <em>Statemachine Operation Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter
+	 * @generated
+	 */
+	public Adapter createStatemachineOperationParameterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineOperation <em>Statemachine Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineOperation
+	 * @generated
+	 */
+	public Adapter createStatemachineOperationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineGuard <em>Statemachine Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineGuard
+	 * @generated
+	 */
+	public Adapter createStatemachineGuardAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFunction <em>Statemachine Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFunction
+	 * @generated
+	 */
+	public Adapter createStatemachineFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve <em>Statemachine Storage Retrieve</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.statemachine.StatemachineStorageRetrieve
+	 * @generated
+	 */
+	public Adapter createStatemachineStorageRetrieveAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineStorage <em>Statemachine Storage</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.statemachine.StatemachineStorage
+	 * @generated
+	 */
+	public Adapter createStatemachineStorageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation <em>Statemachine Action Field Concatenation</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.statemachine.StatemachineActionFieldConcatenation
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldConcatenationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet <em>Statemachine Action Field Set</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.statemachine.StatemachineActionFieldSet
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldSetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke <em>Statemachine Action Field Keystroke</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.statemachine.StatemachineActionFieldKeystroke
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldKeystrokeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear <em>Statemachine Action Field Clear</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.statemachine.StatemachineActionFieldClear
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldClearAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet <em>Statemachine Action Field Get</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.statemachine.StatemachineActionFieldGet
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldGetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove <em>Statemachine Action Field Remove</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.statemachine.StatemachineActionFieldRemove
+	 * @generated
+	 */
+	public Adapter createStatemachineActionFieldRemoveAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible <em>Statemachine Action Item Visible</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.statemachine.StatemachineActionItemVisible
+	 * @generated
+	 */
+	public Adapter createStatemachineActionItemVisibleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible <em>Statemachine Action Item Invisible</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.statemachine.StatemachineActionItemInvisible
+	 * @generated
+	 */
+	public Adapter createStatemachineActionItemInvisibleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption <em>Statemachine Action Button Caption</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.statemachine.StatemachineActionButtonCaption
+	 * @generated
+	 */
+	public Adapter createStatemachineActionButtonCaptionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage <em>Statemachine Action Button Image</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.statemachine.StatemachineActionButtonImage
+	 * @generated
+	 */
+	public Adapter createStatemachineActionButtonImageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind <em>Statemachine Action DTO Find</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.statemachine.StatemachineActionDTOFind
+	 * @generated
+	 */
+	public Adapter createStatemachineActionDTOFindAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler <em>Statemachine Action Scheduler</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.statemachine.StatemachineActionScheduler
+	 * @generated
+	 */
+	public Adapter createStatemachineActionSchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineDTOType <em>Statemachine DTO Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineDTOType
+	 * @generated
+	 */
+	public Adapter createStatemachineDTOTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.statemachine.StatemachineFieldType <em>Statemachine Field Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.statemachine.StatemachineFieldType
+	 * @generated
+	 */
+	public Adapter createStatemachineFieldTypeAdapter() {
+		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;
+	}
+
+} //StatemachineDSLAdapterFactory
diff --git a/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLSwitch.java b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLSwitch.java
new file mode 100644
index 0000000..4ed92f7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/emf-gen/org/eclipse/osbp/xtext/statemachine/util/StatemachineDSLSwitch.java
@@ -0,0 +1,2148 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.*;
+
+/**
+ * <!-- 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.statemachine.StatemachineDSLPackage
+ * @generated
+ */
+public class StatemachineDSLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static StatemachineDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StatemachineDSLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = StatemachineDSLPackage.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 StatemachineDSLPackage.STATEMACHINE_MODEL: {
+				StatemachineModel statemachineModel = (StatemachineModel)theEObject;
+				T result = caseStatemachineModel(statemachineModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_LAZY_RESOLVER: {
+				StatemachineLazyResolver statemachineLazyResolver = (StatemachineLazyResolver)theEObject;
+				T result = caseStatemachineLazyResolver(statemachineLazyResolver);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_BASE: {
+				StatemachineBase statemachineBase = (StatemachineBase)theEObject;
+				T result = caseStatemachineBase(statemachineBase);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineBase);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE: {
+				StatemachinePackage statemachinePackage = (StatemachinePackage)theEObject;
+				T result = caseStatemachinePackage(statemachinePackage);
+				if (result == null) result = caseLPackage(statemachinePackage);
+				if (result == null) result = caseLLazyResolver(statemachinePackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE: {
+				Statemachine statemachine = (Statemachine)theEObject;
+				T result = caseStatemachine(statemachine);
+				if (result == null) result = caseStatemachineBase(statemachine);
+				if (result == null) result = caseStatemachineLazyResolver(statemachine);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL: {
+				StatemachineControl statemachineControl = (StatemachineControl)theEObject;
+				T result = caseStatemachineControl(statemachineControl);
+				if (result == null) result = caseStatemachineBase(statemachineControl);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControl);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON: {
+				StatemachineControlButton statemachineControlButton = (StatemachineControlButton)theEObject;
+				T result = caseStatemachineControlButton(statemachineControlButton);
+				if (result == null) result = caseStatemachineControl(statemachineControlButton);
+				if (result == null) result = caseStatemachineControlVisibility(statemachineControlButton);
+				if (result == null) result = caseStatemachineBase(statemachineControlButton);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButton);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD: {
+				StatemachineControlField statemachineControlField = (StatemachineControlField)theEObject;
+				T result = caseStatemachineControlField(statemachineControlField);
+				if (result == null) result = caseStatemachineControl(statemachineControlField);
+				if (result == null) result = caseStatemachineBase(statemachineControlField);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlField);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO: {
+				StatemachineControlDTO statemachineControlDTO = (StatemachineControlDTO)theEObject;
+				T result = caseStatemachineControlDTO(statemachineControlDTO);
+				if (result == null) result = caseStatemachineControl(statemachineControlDTO);
+				if (result == null) result = caseStatemachineBase(statemachineControlDTO);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlDTO);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER: {
+				StatemachineControlScheduler statemachineControlScheduler = (StatemachineControlScheduler)theEObject;
+				T result = caseStatemachineControlScheduler(statemachineControlScheduler);
+				if (result == null) result = caseStatemachineControl(statemachineControlScheduler);
+				if (result == null) result = caseStatemachineBase(statemachineControlScheduler);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL: {
+				StatemachineControlPeripheral statemachineControlPeripheral = (StatemachineControlPeripheral)theEObject;
+				T result = caseStatemachineControlPeripheral(statemachineControlPeripheral);
+				if (result == null) result = caseStatemachineControl(statemachineControlPeripheral);
+				if (result == null) result = caseStatemachineBase(statemachineControlPeripheral);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlPeripheral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE: {
+				StatemachineControlButtonAttribute statemachineControlButtonAttribute = (StatemachineControlButtonAttribute)theEObject;
+				T result = caseStatemachineControlButtonAttribute(statemachineControlButtonAttribute);
+				if (result == null) result = caseStatemachineControlVisibility(statemachineControlButtonAttribute);
+				if (result == null) result = caseStatemachineBase(statemachineControlButtonAttribute);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButtonAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT: {
+				StatemachineControlButtonAttributeEvent statemachineControlButtonAttributeEvent = (StatemachineControlButtonAttributeEvent)theEObject;
+				T result = caseStatemachineControlButtonAttributeEvent(statemachineControlButtonAttributeEvent);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButtonAttributeEvent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD: {
+				StatemachineControlButtonAttributeEventKeyboard statemachineControlButtonAttributeEventKeyboard = (StatemachineControlButtonAttributeEventKeyboard)theEObject;
+				T result = caseStatemachineControlButtonAttributeEventKeyboard(statemachineControlButtonAttributeEventKeyboard);
+				if (result == null) result = caseStatemachineControlButtonAttributeEvent(statemachineControlButtonAttributeEventKeyboard);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButtonAttributeEventKeyboard);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY: {
+				StatemachineControlButtonAttributeEventIdentity statemachineControlButtonAttributeEventIdentity = (StatemachineControlButtonAttributeEventIdentity)theEObject;
+				T result = caseStatemachineControlButtonAttributeEventIdentity(statemachineControlButtonAttributeEventIdentity);
+				if (result == null) result = caseStatemachineControlButtonAttributeEvent(statemachineControlButtonAttributeEventIdentity);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButtonAttributeEventIdentity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT: {
+				StatemachineControlButtonAttributeEventEvent statemachineControlButtonAttributeEventEvent = (StatemachineControlButtonAttributeEventEvent)theEObject;
+				T result = caseStatemachineControlButtonAttributeEventEvent(statemachineControlButtonAttributeEventEvent);
+				if (result == null) result = caseStatemachineControlButtonAttributeEvent(statemachineControlButtonAttributeEventEvent);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlButtonAttributeEventEvent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_VISIBILITY: {
+				StatemachineControlVisibility statemachineControlVisibility = (StatemachineControlVisibility)theEObject;
+				T result = caseStatemachineControlVisibility(statemachineControlVisibility);
+				if (result == null) result = caseStatemachineBase(statemachineControlVisibility);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlVisibility);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE: {
+				StatemachineControlFieldAttribute statemachineControlFieldAttribute = (StatemachineControlFieldAttribute)theEObject;
+				T result = caseStatemachineControlFieldAttribute(statemachineControlFieldAttribute);
+				if (result == null) result = caseStatemachineControlVisibility(statemachineControlFieldAttribute);
+				if (result == null) result = caseStatemachineBase(statemachineControlFieldAttribute);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlFieldAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_LAYOUT: {
+				StatemachineControlFieldLayout statemachineControlFieldLayout = (StatemachineControlFieldLayout)theEObject;
+				T result = caseStatemachineControlFieldLayout(statemachineControlFieldLayout);
+				if (result == null) result = caseStatemachineControlVisibility(statemachineControlFieldLayout);
+				if (result == null) result = caseStatemachineBase(statemachineControlFieldLayout);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlFieldLayout);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE: {
+				StatemachineControlDTOAttribute statemachineControlDTOAttribute = (StatemachineControlDTOAttribute)theEObject;
+				T result = caseStatemachineControlDTOAttribute(statemachineControlDTOAttribute);
+				if (result == null) result = caseStatemachineBase(statemachineControlDTOAttribute);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlDTOAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE: {
+				StatemachinePeripheralDevice statemachinePeripheralDevice = (StatemachinePeripheralDevice)theEObject;
+				T result = caseStatemachinePeripheralDevice(statemachinePeripheralDevice);
+				if (result == null) result = caseStatemachineBase(statemachinePeripheralDevice);
+				if (result == null) result = caseStatemachineLazyResolver(statemachinePeripheralDevice);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY: {
+				StatemachinePeripheralDeviceLineDisplay statemachinePeripheralDeviceLineDisplay = (StatemachinePeripheralDeviceLineDisplay)theEObject;
+				T result = caseStatemachinePeripheralDeviceLineDisplay(statemachinePeripheralDeviceLineDisplay);
+				if (result == null) result = caseStatemachinePeripheralDevice(statemachinePeripheralDeviceLineDisplay);
+				if (result == null) result = caseStatemachineBase(statemachinePeripheralDeviceLineDisplay);
+				if (result == null) result = caseStatemachineLazyResolver(statemachinePeripheralDeviceLineDisplay);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER: {
+				StatemachinePeripheralDevicePOSPrinter statemachinePeripheralDevicePOSPrinter = (StatemachinePeripheralDevicePOSPrinter)theEObject;
+				T result = caseStatemachinePeripheralDevicePOSPrinter(statemachinePeripheralDevicePOSPrinter);
+				if (result == null) result = caseStatemachinePeripheralDevice(statemachinePeripheralDevicePOSPrinter);
+				if (result == null) result = caseStatemachineBase(statemachinePeripheralDevicePOSPrinter);
+				if (result == null) result = caseStatemachineLazyResolver(statemachinePeripheralDevicePOSPrinter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER: {
+				StatemachinePeripheralDeviceCashDrawer statemachinePeripheralDeviceCashDrawer = (StatemachinePeripheralDeviceCashDrawer)theEObject;
+				T result = caseStatemachinePeripheralDeviceCashDrawer(statemachinePeripheralDeviceCashDrawer);
+				if (result == null) result = caseStatemachinePeripheralDevice(statemachinePeripheralDeviceCashDrawer);
+				if (result == null) result = caseStatemachineBase(statemachinePeripheralDeviceCashDrawer);
+				if (result == null) result = caseStatemachineLazyResolver(statemachinePeripheralDeviceCashDrawer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_PT: {
+				StatemachinePeripheralDevicePT statemachinePeripheralDevicePT = (StatemachinePeripheralDevicePT)theEObject;
+				T result = caseStatemachinePeripheralDevicePT(statemachinePeripheralDevicePT);
+				if (result == null) result = caseStatemachinePeripheralDevice(statemachinePeripheralDevicePT);
+				if (result == null) result = caseStatemachineBase(statemachinePeripheralDevicePT);
+				if (result == null) result = caseStatemachineLazyResolver(statemachinePeripheralDevicePT);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE: {
+				StatemachineControlSchedulerAttribute statemachineControlSchedulerAttribute = (StatemachineControlSchedulerAttribute)theEObject;
+				T result = caseStatemachineControlSchedulerAttribute(statemachineControlSchedulerAttribute);
+				if (result == null) result = caseStatemachineBase(statemachineControlSchedulerAttribute);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineControlSchedulerAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_EVENT: {
+				StatemachineEvent statemachineEvent = (StatemachineEvent)theEObject;
+				T result = caseStatemachineEvent(statemachineEvent);
+				if (result == null) result = caseStatemachineBase(statemachineEvent);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineEvent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_STATE: {
+				StatemachineState statemachineState = (StatemachineState)theEObject;
+				T result = caseStatemachineState(statemachineState);
+				if (result == null) result = caseStatemachineBase(statemachineState);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineState);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER: {
+				StatemachineTrigger statemachineTrigger = (StatemachineTrigger)theEObject;
+				T result = caseStatemachineTrigger(statemachineTrigger);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineTrigger);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION: {
+				StatemachineAction statemachineAction = (StatemachineAction)theEObject;
+				T result = caseStatemachineAction(statemachineAction);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineAction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE: {
+				StatemachineActionPeripheralBlinkRate statemachineActionPeripheralBlinkRate = (StatemachineActionPeripheralBlinkRate)theEObject;
+				T result = caseStatemachineActionPeripheralBlinkRate(statemachineActionPeripheralBlinkRate);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralBlinkRate);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralBlinkRate);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR: {
+				StatemachineActionPeripheralClear statemachineActionPeripheralClear = (StatemachineActionPeripheralClear)theEObject;
+				T result = caseStatemachineActionPeripheralClear(statemachineActionPeripheralClear);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralClear);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralClear);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW: {
+				StatemachineActionPeripheralCreateWindow statemachineActionPeripheralCreateWindow = (StatemachineActionPeripheralCreateWindow)theEObject;
+				T result = caseStatemachineActionPeripheralCreateWindow(statemachineActionPeripheralCreateWindow);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralCreateWindow);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralCreateWindow);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE: {
+				StatemachineActionPeripheralCursorType statemachineActionPeripheralCursorType = (StatemachineActionPeripheralCursorType)theEObject;
+				T result = caseStatemachineActionPeripheralCursorType(statemachineActionPeripheralCursorType);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralCursorType);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralCursorType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW: {
+				StatemachineActionPeripheralDestroyWindow statemachineActionPeripheralDestroyWindow = (StatemachineActionPeripheralDestroyWindow)theEObject;
+				T result = caseStatemachineActionPeripheralDestroyWindow(statemachineActionPeripheralDestroyWindow);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralDestroyWindow);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralDestroyWindow);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS: {
+				StatemachineActionPeripheralDeviceBrightness statemachineActionPeripheralDeviceBrightness = (StatemachineActionPeripheralDeviceBrightness)theEObject;
+				T result = caseStatemachineActionPeripheralDeviceBrightness(statemachineActionPeripheralDeviceBrightness);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralDeviceBrightness);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralDeviceBrightness);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP: {
+				StatemachineActionPeripheralDisplayBitmap statemachineActionPeripheralDisplayBitmap = (StatemachineActionPeripheralDisplayBitmap)theEObject;
+				T result = caseStatemachineActionPeripheralDisplayBitmap(statemachineActionPeripheralDisplayBitmap);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralDisplayBitmap);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralDisplayBitmap);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT: {
+				StatemachineActionPeripheralDisplayText statemachineActionPeripheralDisplayText = (StatemachineActionPeripheralDisplayText)theEObject;
+				T result = caseStatemachineActionPeripheralDisplayText(statemachineActionPeripheralDisplayText);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralDisplayText);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralDisplayText);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT: {
+				StatemachineActionPeripheralDisplayTextAt statemachineActionPeripheralDisplayTextAt = (StatemachineActionPeripheralDisplayTextAt)theEObject;
+				T result = caseStatemachineActionPeripheralDisplayTextAt(statemachineActionPeripheralDisplayTextAt);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralDisplayTextAt);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralDisplayTextAt);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT: {
+				StatemachineActionPeripheralInterCharacterWait statemachineActionPeripheralInterCharacterWait = (StatemachineActionPeripheralInterCharacterWait)theEObject;
+				T result = caseStatemachineActionPeripheralInterCharacterWait(statemachineActionPeripheralInterCharacterWait);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralInterCharacterWait);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralInterCharacterWait);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT: {
+				StatemachineActionPeripheralMarqueeFormat statemachineActionPeripheralMarqueeFormat = (StatemachineActionPeripheralMarqueeFormat)theEObject;
+				T result = caseStatemachineActionPeripheralMarqueeFormat(statemachineActionPeripheralMarqueeFormat);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralMarqueeFormat);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralMarqueeFormat);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT: {
+				StatemachineActionPeripheralMarqueeRepeatWait statemachineActionPeripheralMarqueeRepeatWait = (StatemachineActionPeripheralMarqueeRepeatWait)theEObject;
+				T result = caseStatemachineActionPeripheralMarqueeRepeatWait(statemachineActionPeripheralMarqueeRepeatWait);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralMarqueeRepeatWait);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralMarqueeRepeatWait);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE: {
+				StatemachineActionPeripheralMarqueeType statemachineActionPeripheralMarqueeType = (StatemachineActionPeripheralMarqueeType)theEObject;
+				T result = caseStatemachineActionPeripheralMarqueeType(statemachineActionPeripheralMarqueeType);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralMarqueeType);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralMarqueeType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT: {
+				StatemachineActionPeripheralMarqueeUnitWait statemachineActionPeripheralMarqueeUnitWait = (StatemachineActionPeripheralMarqueeUnitWait)theEObject;
+				T result = caseStatemachineActionPeripheralMarqueeUnitWait(statemachineActionPeripheralMarqueeUnitWait);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralMarqueeUnitWait);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralMarqueeUnitWait);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL: {
+				StatemachineActionPeripheralScroll statemachineActionPeripheralScroll = (StatemachineActionPeripheralScroll)theEObject;
+				T result = caseStatemachineActionPeripheralScroll(statemachineActionPeripheralScroll);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralScroll);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralScroll);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER: {
+				StatemachineActionPeripheralOpenDrawer statemachineActionPeripheralOpenDrawer = (StatemachineActionPeripheralOpenDrawer)theEObject;
+				T result = caseStatemachineActionPeripheralOpenDrawer(statemachineActionPeripheralOpenDrawer);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralOpenDrawer);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralOpenDrawer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE: {
+				StatemachineActionPeripheralPrintBarcode statemachineActionPeripheralPrintBarcode = (StatemachineActionPeripheralPrintBarcode)theEObject;
+				T result = caseStatemachineActionPeripheralPrintBarcode(statemachineActionPeripheralPrintBarcode);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintBarcode);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintBarcode);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP: {
+				StatemachineActionPeripheralPrintBitmap statemachineActionPeripheralPrintBitmap = (StatemachineActionPeripheralPrintBitmap)theEObject;
+				T result = caseStatemachineActionPeripheralPrintBitmap(statemachineActionPeripheralPrintBitmap);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintBitmap);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintBitmap);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT: {
+				StatemachineActionPeripheralPrintCut statemachineActionPeripheralPrintCut = (StatemachineActionPeripheralPrintCut)theEObject;
+				T result = caseStatemachineActionPeripheralPrintCut(statemachineActionPeripheralPrintCut);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintCut);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintCut);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP: {
+				StatemachineActionPeripheralPrintRegisterBitmap statemachineActionPeripheralPrintRegisterBitmap = (StatemachineActionPeripheralPrintRegisterBitmap)theEObject;
+				T result = caseStatemachineActionPeripheralPrintRegisterBitmap(statemachineActionPeripheralPrintRegisterBitmap);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintRegisterBitmap);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintRegisterBitmap);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL: {
+				StatemachineActionPeripheralPrintNormal statemachineActionPeripheralPrintNormal = (StatemachineActionPeripheralPrintNormal)theEObject;
+				T result = caseStatemachineActionPeripheralPrintNormal(statemachineActionPeripheralPrintNormal);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintNormal);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintNormal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN: {
+				StatemachineActionPeripheralPTOpen statemachineActionPeripheralPTOpen = (StatemachineActionPeripheralPTOpen)theEObject;
+				T result = caseStatemachineActionPeripheralPTOpen(statemachineActionPeripheralPTOpen);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTOpen);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTOpen);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE: {
+				StatemachineActionPeripheralPTClose statemachineActionPeripheralPTClose = (StatemachineActionPeripheralPTClose)theEObject;
+				T result = caseStatemachineActionPeripheralPTClose(statemachineActionPeripheralPTClose);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTClose);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTClose);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL: {
+				StatemachineActionPeripheralPTReversal statemachineActionPeripheralPTReversal = (StatemachineActionPeripheralPTReversal)theEObject;
+				T result = caseStatemachineActionPeripheralPTReversal(statemachineActionPeripheralPTReversal);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTReversal);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTReversal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE: {
+				StatemachineActionPeripheralPTAcknowledge statemachineActionPeripheralPTAcknowledge = (StatemachineActionPeripheralPTAcknowledge)theEObject;
+				T result = caseStatemachineActionPeripheralPTAcknowledge(statemachineActionPeripheralPTAcknowledge);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTAcknowledge);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTAcknowledge);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION: {
+				StatemachineActionPeripheralPTRegistration statemachineActionPeripheralPTRegistration = (StatemachineActionPeripheralPTRegistration)theEObject;
+				T result = caseStatemachineActionPeripheralPTRegistration(statemachineActionPeripheralPTRegistration);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTRegistration);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTRegistration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION: {
+				StatemachineActionPeripheralPTAuthorization statemachineActionPeripheralPTAuthorization = (StatemachineActionPeripheralPTAuthorization)theEObject;
+				T result = caseStatemachineActionPeripheralPTAuthorization(statemachineActionPeripheralPTAuthorization);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTAuthorization);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTAuthorization);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE: {
+				StatemachineActionPeripheralPTResponse statemachineActionPeripheralPTResponse = (StatemachineActionPeripheralPTResponse)theEObject;
+				T result = caseStatemachineActionPeripheralPTResponse(statemachineActionPeripheralPTResponse);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionPeripheralPTResponse);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPTResponse);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPTResponse);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT: {
+				StatemachineActionPeripheralPrintReport statemachineActionPeripheralPrintReport = (StatemachineActionPeripheralPrintReport)theEObject;
+				T result = caseStatemachineActionPeripheralPrintReport(statemachineActionPeripheralPrintReport);
+				if (result == null) result = caseStatemachineAction(statemachineActionPeripheralPrintReport);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionPeripheralPrintReport);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE: {
+				StatemachineActionFieldSource statemachineActionFieldSource = (StatemachineActionFieldSource)theEObject;
+				T result = caseStatemachineActionFieldSource(statemachineActionFieldSource);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSource);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSource);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING: {
+				StatemachineActionFieldSourceString statemachineActionFieldSourceString = (StatemachineActionFieldSourceString)theEObject;
+				T result = caseStatemachineActionFieldSourceString(statemachineActionFieldSourceString);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceString);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceString);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceString);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER: {
+				StatemachineActionFieldSourceNumber statemachineActionFieldSourceNumber = (StatemachineActionFieldSourceNumber)theEObject;
+				T result = caseStatemachineActionFieldSourceNumber(statemachineActionFieldSourceNumber);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceNumber);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceNumber);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceNumber);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE: {
+				StatemachineActionFieldSourceEvaluate statemachineActionFieldSourceEvaluate = (StatemachineActionFieldSourceEvaluate)theEObject;
+				T result = caseStatemachineActionFieldSourceEvaluate(statemachineActionFieldSourceEvaluate);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceEvaluate);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceEvaluate);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceEvaluate);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE: {
+				StatemachineActionFieldSourceTranslate statemachineActionFieldSourceTranslate = (StatemachineActionFieldSourceTranslate)theEObject;
+				T result = caseStatemachineActionFieldSourceTranslate(statemachineActionFieldSourceTranslate);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceTranslate);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceTranslate);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceTranslate);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE: {
+				StatemachineActionFieldSourceDtoAttribute statemachineActionFieldSourceDtoAttribute = (StatemachineActionFieldSourceDtoAttribute)theEObject;
+				T result = caseStatemachineActionFieldSourceDtoAttribute(statemachineActionFieldSourceDtoAttribute);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceDtoAttribute);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceDtoAttribute);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceDtoAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVENT: {
+				StatemachineActionFieldSourceEvent statemachineActionFieldSourceEvent = (StatemachineActionFieldSourceEvent)theEObject;
+				T result = caseStatemachineActionFieldSourceEvent(statemachineActionFieldSourceEvent);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldSourceEvent);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSourceEvent);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSourceEvent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION: {
+				StatemachineActionConditionalTransition statemachineActionConditionalTransition = (StatemachineActionConditionalTransition)theEObject;
+				T result = caseStatemachineActionConditionalTransition(statemachineActionConditionalTransition);
+				if (result == null) result = caseStatemachineAction(statemachineActionConditionalTransition);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionConditionalTransition);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER: {
+				StatemachineOperationParameter statemachineOperationParameter = (StatemachineOperationParameter)theEObject;
+				T result = caseStatemachineOperationParameter(statemachineOperationParameter);
+				if (result == null) result = caseStatemachineAction(statemachineOperationParameter);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineOperationParameter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION: {
+				StatemachineOperation statemachineOperation = (StatemachineOperation)theEObject;
+				T result = caseStatemachineOperation(statemachineOperation);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineOperation);
+				if (result == null) result = caseStatemachineAction(statemachineOperation);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_GUARD: {
+				StatemachineGuard statemachineGuard = (StatemachineGuard)theEObject;
+				T result = caseStatemachineGuard(statemachineGuard);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineGuard);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION: {
+				StatemachineFunction statemachineFunction = (StatemachineFunction)theEObject;
+				T result = caseStatemachineFunction(statemachineFunction);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineFunction);
+				if (result == null) result = caseStatemachineAction(statemachineFunction);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE: {
+				StatemachineStorageRetrieve statemachineStorageRetrieve = (StatemachineStorageRetrieve)theEObject;
+				T result = caseStatemachineStorageRetrieve(statemachineStorageRetrieve);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineStorageRetrieve);
+				if (result == null) result = caseStatemachineAction(statemachineStorageRetrieve);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineStorageRetrieve);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE: {
+				StatemachineStorage statemachineStorage = (StatemachineStorage)theEObject;
+				T result = caseStatemachineStorage(statemachineStorage);
+				if (result == null) result = caseStatemachineAction(statemachineStorage);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineStorage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION: {
+				StatemachineActionFieldConcatenation statemachineActionFieldConcatenation = (StatemachineActionFieldConcatenation)theEObject;
+				T result = caseStatemachineActionFieldConcatenation(statemachineActionFieldConcatenation);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldConcatenation);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldConcatenation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET: {
+				StatemachineActionFieldSet statemachineActionFieldSet = (StatemachineActionFieldSet)theEObject;
+				T result = caseStatemachineActionFieldSet(statemachineActionFieldSet);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldSet);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldSet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_KEYSTROKE: {
+				StatemachineActionFieldKeystroke statemachineActionFieldKeystroke = (StatemachineActionFieldKeystroke)theEObject;
+				T result = caseStatemachineActionFieldKeystroke(statemachineActionFieldKeystroke);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldKeystroke);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldKeystroke);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR: {
+				StatemachineActionFieldClear statemachineActionFieldClear = (StatemachineActionFieldClear)theEObject;
+				T result = caseStatemachineActionFieldClear(statemachineActionFieldClear);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldClear);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldClear);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET: {
+				StatemachineActionFieldGet statemachineActionFieldGet = (StatemachineActionFieldGet)theEObject;
+				T result = caseStatemachineActionFieldGet(statemachineActionFieldGet);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldGet);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldGet);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldGet);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE: {
+				StatemachineActionFieldRemove statemachineActionFieldRemove = (StatemachineActionFieldRemove)theEObject;
+				T result = caseStatemachineActionFieldRemove(statemachineActionFieldRemove);
+				if (result == null) result = caseStatemachineActionFieldSource(statemachineActionFieldRemove);
+				if (result == null) result = caseStatemachineAction(statemachineActionFieldRemove);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionFieldRemove);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE: {
+				StatemachineActionItemVisible statemachineActionItemVisible = (StatemachineActionItemVisible)theEObject;
+				T result = caseStatemachineActionItemVisible(statemachineActionItemVisible);
+				if (result == null) result = caseStatemachineAction(statemachineActionItemVisible);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionItemVisible);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE: {
+				StatemachineActionItemInvisible statemachineActionItemInvisible = (StatemachineActionItemInvisible)theEObject;
+				T result = caseStatemachineActionItemInvisible(statemachineActionItemInvisible);
+				if (result == null) result = caseStatemachineAction(statemachineActionItemInvisible);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionItemInvisible);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION: {
+				StatemachineActionButtonCaption statemachineActionButtonCaption = (StatemachineActionButtonCaption)theEObject;
+				T result = caseStatemachineActionButtonCaption(statemachineActionButtonCaption);
+				if (result == null) result = caseStatemachineAction(statemachineActionButtonCaption);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionButtonCaption);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE: {
+				StatemachineActionButtonImage statemachineActionButtonImage = (StatemachineActionButtonImage)theEObject;
+				T result = caseStatemachineActionButtonImage(statemachineActionButtonImage);
+				if (result == null) result = caseStatemachineAction(statemachineActionButtonImage);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionButtonImage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND: {
+				StatemachineActionDTOFind statemachineActionDTOFind = (StatemachineActionDTOFind)theEObject;
+				T result = caseStatemachineActionDTOFind(statemachineActionDTOFind);
+				if (result == null) result = caseStatemachineAction(statemachineActionDTOFind);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionDTOFind);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER: {
+				StatemachineActionScheduler statemachineActionScheduler = (StatemachineActionScheduler)theEObject;
+				T result = caseStatemachineActionScheduler(statemachineActionScheduler);
+				if (result == null) result = caseStatemachineAction(statemachineActionScheduler);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineActionScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE: {
+				StatemachineDTOType statemachineDTOType = (StatemachineDTOType)theEObject;
+				T result = caseStatemachineDTOType(statemachineDTOType);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineDTOType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE: {
+				StatemachineFieldType statemachineFieldType = (StatemachineFieldType)theEObject;
+				T result = caseStatemachineFieldType(statemachineFieldType);
+				if (result == null) result = caseStatemachineLazyResolver(statemachineFieldType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine 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>Statemachine Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineModel(StatemachineModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine 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>Statemachine Lazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineLazyResolver(StatemachineLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine 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>Statemachine Base</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineBase(StatemachineBase object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine 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>Statemachine Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePackage(StatemachinePackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine</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>Statemachine</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachine(Statemachine object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control</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>Statemachine Control</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControl(StatemachineControl object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button</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>Statemachine Control Button</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButton(StatemachineControlButton object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Field</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>Statemachine Control Field</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlField(StatemachineControlField object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control DTO</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Control DTO</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlDTO(StatemachineControlDTO object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Scheduler</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>Statemachine Control Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlScheduler(StatemachineControlScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Peripheral</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>Statemachine Control Peripheral</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlPeripheral(StatemachineControlPeripheral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButtonAttribute(StatemachineControlButtonAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute Event</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>Statemachine Control Button Attribute Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButtonAttributeEvent(StatemachineControlButtonAttributeEvent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute Event Keyboard</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>Statemachine Control Button Attribute Event Keyboard</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButtonAttributeEventKeyboard(StatemachineControlButtonAttributeEventKeyboard object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute Event Identity</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>Statemachine Control Button Attribute Event Identity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButtonAttributeEventIdentity(StatemachineControlButtonAttributeEventIdentity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Button Attribute Event Event</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>Statemachine Control Button Attribute Event Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlButtonAttributeEventEvent(StatemachineControlButtonAttributeEventEvent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Visibility</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>Statemachine Control Visibility</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlVisibility(StatemachineControlVisibility object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Field Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Control Field Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlFieldAttribute(StatemachineControlFieldAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Field Layout</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>Statemachine Control Field Layout</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlFieldLayout(StatemachineControlFieldLayout object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control DTO Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Control DTO Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlDTOAttribute(StatemachineControlDTOAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Peripheral Device</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>Statemachine Peripheral Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePeripheralDevice(StatemachinePeripheralDevice object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Peripheral Device Line Display</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>Statemachine Peripheral Device Line Display</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePeripheralDeviceLineDisplay(StatemachinePeripheralDeviceLineDisplay object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Peripheral Device POS Printer</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>Statemachine Peripheral Device POS Printer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePeripheralDevicePOSPrinter(StatemachinePeripheralDevicePOSPrinter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Peripheral Device Cash Drawer</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>Statemachine Peripheral Device Cash Drawer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePeripheralDeviceCashDrawer(StatemachinePeripheralDeviceCashDrawer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Peripheral Device PT</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>Statemachine Peripheral Device PT</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachinePeripheralDevicePT(StatemachinePeripheralDevicePT object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Control Scheduler Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Control Scheduler Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineControlSchedulerAttribute(StatemachineControlSchedulerAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Event</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>Statemachine Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineEvent(StatemachineEvent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine State</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>Statemachine State</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineState(StatemachineState object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Trigger</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>Statemachine Trigger</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineTrigger(StatemachineTrigger object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action</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>Statemachine Action</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineAction(StatemachineAction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Blink Rate</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Blink Rate</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralBlinkRate(StatemachineActionPeripheralBlinkRate object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Clear</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>Statemachine Action Peripheral Clear</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralClear(StatemachineActionPeripheralClear object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Create Window</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>Statemachine Action Peripheral Create Window</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralCreateWindow(StatemachineActionPeripheralCreateWindow object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Cursor Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Cursor Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralCursorType(StatemachineActionPeripheralCursorType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Destroy Window</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>Statemachine Action Peripheral Destroy Window</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralDestroyWindow(StatemachineActionPeripheralDestroyWindow object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Device Brightness</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>Statemachine Action Peripheral Device Brightness</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralDeviceBrightness(StatemachineActionPeripheralDeviceBrightness object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Display Bitmap</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>Statemachine Action Peripheral Display Bitmap</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralDisplayBitmap(StatemachineActionPeripheralDisplayBitmap object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Display Text</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>Statemachine Action Peripheral Display Text</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralDisplayText(StatemachineActionPeripheralDisplayText object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Display Text At</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>Statemachine Action Peripheral Display Text At</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralDisplayTextAt(StatemachineActionPeripheralDisplayTextAt object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Inter Character Wait</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>Statemachine Action Peripheral Inter Character Wait</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralInterCharacterWait(StatemachineActionPeripheralInterCharacterWait object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Marquee Format</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>Statemachine Action Peripheral Marquee Format</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralMarqueeFormat(StatemachineActionPeripheralMarqueeFormat object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Marquee Repeat Wait</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>Statemachine Action Peripheral Marquee Repeat Wait</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralMarqueeRepeatWait(StatemachineActionPeripheralMarqueeRepeatWait object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Marquee Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Marquee Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralMarqueeType(StatemachineActionPeripheralMarqueeType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Marquee Unit Wait</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>Statemachine Action Peripheral Marquee Unit Wait</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralMarqueeUnitWait(StatemachineActionPeripheralMarqueeUnitWait object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Scroll</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>Statemachine Action Peripheral Scroll</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralScroll(StatemachineActionPeripheralScroll object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Open Drawer</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>Statemachine Action Peripheral Open Drawer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralOpenDrawer(StatemachineActionPeripheralOpenDrawer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Barcode</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>Statemachine Action Peripheral Print Barcode</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintBarcode(StatemachineActionPeripheralPrintBarcode object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Bitmap</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>Statemachine Action Peripheral Print Bitmap</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintBitmap(StatemachineActionPeripheralPrintBitmap object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Cut</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>Statemachine Action Peripheral Print Cut</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintCut(StatemachineActionPeripheralPrintCut object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Register Bitmap</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>Statemachine Action Peripheral Print Register Bitmap</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintRegisterBitmap(StatemachineActionPeripheralPrintRegisterBitmap object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Normal</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>Statemachine Action Peripheral Print Normal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintNormal(StatemachineActionPeripheralPrintNormal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Open</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>Statemachine Action Peripheral PT Open</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTOpen(StatemachineActionPeripheralPTOpen object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Close</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>Statemachine Action Peripheral PT Close</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTClose(StatemachineActionPeripheralPTClose object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Reversal</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>Statemachine Action Peripheral PT Reversal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTReversal(StatemachineActionPeripheralPTReversal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Acknowledge</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>Statemachine Action Peripheral PT Acknowledge</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTAcknowledge(StatemachineActionPeripheralPTAcknowledge object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Registration</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>Statemachine Action Peripheral PT Registration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTRegistration(StatemachineActionPeripheralPTRegistration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Authorization</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>Statemachine Action Peripheral PT Authorization</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTAuthorization(StatemachineActionPeripheralPTAuthorization object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral PT Response</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>Statemachine Action Peripheral PT Response</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPTResponse(StatemachineActionPeripheralPTResponse object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Peripheral Print Report</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>Statemachine Action Peripheral Print Report</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionPeripheralPrintReport(StatemachineActionPeripheralPrintReport object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source</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>Statemachine Action Field Source</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSource(StatemachineActionFieldSource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source String</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>Statemachine Action Field Source String</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceString(StatemachineActionFieldSourceString object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Number</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>Statemachine Action Field Source Number</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceNumber(StatemachineActionFieldSourceNumber object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Evaluate</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>Statemachine Action Field Source Evaluate</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceEvaluate(StatemachineActionFieldSourceEvaluate object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Translate</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>Statemachine Action Field Source Translate</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceTranslate(StatemachineActionFieldSourceTranslate object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Dto Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Dto Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceDtoAttribute(StatemachineActionFieldSourceDtoAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Source Event</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>Statemachine Action Field Source Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSourceEvent(StatemachineActionFieldSourceEvent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Conditional Transition</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>Statemachine Action Conditional Transition</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionConditionalTransition(StatemachineActionConditionalTransition object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Operation Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Operation Parameter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineOperationParameter(StatemachineOperationParameter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Operation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineOperation(StatemachineOperation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Guard</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Guard</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineGuard(StatemachineGuard object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineFunction(StatemachineFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Storage Retrieve</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>Statemachine Storage Retrieve</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineStorageRetrieve(StatemachineStorageRetrieve object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Storage</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>Statemachine Storage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineStorage(StatemachineStorage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Concatenation</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>Statemachine Action Field Concatenation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldConcatenation(StatemachineActionFieldConcatenation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Set</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>Statemachine Action Field Set</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldSet(StatemachineActionFieldSet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Keystroke</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>Statemachine Action Field Keystroke</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldKeystroke(StatemachineActionFieldKeystroke object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Clear</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>Statemachine Action Field Clear</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldClear(StatemachineActionFieldClear object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Get</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>Statemachine Action Field Get</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldGet(StatemachineActionFieldGet object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Field Remove</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>Statemachine Action Field Remove</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionFieldRemove(StatemachineActionFieldRemove object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Item Visible</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>Statemachine Action Item Visible</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionItemVisible(StatemachineActionItemVisible object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Item Invisible</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>Statemachine Action Item Invisible</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionItemInvisible(StatemachineActionItemInvisible object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Button Caption</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>Statemachine Action Button Caption</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionButtonCaption(StatemachineActionButtonCaption object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Button Image</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>Statemachine Action Button Image</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionButtonImage(StatemachineActionButtonImage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action DTO Find</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>Statemachine Action DTO Find</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionDTOFind(StatemachineActionDTOFind object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Action Scheduler</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>Statemachine Action Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineActionScheduler(StatemachineActionScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine DTO Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine DTO Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineDTOType(StatemachineDTOType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Statemachine Field Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Statemachine Field Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStatemachineFieldType(StatemachineFieldType 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;
+	}
+
+} //StatemachineDSLSwitch
diff --git a/org.eclipse.osbp.xtext.statemachine/epl-v10.html b/org.eclipse.osbp.xtext.statemachine/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/license.html b/org.eclipse.osbp.xtext.statemachine/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/model/StatemachineDSL.xcore b/org.eclipse.osbp.xtext.statemachine/model/StatemachineDSL.xcore
new file mode 100644
index 0000000..38089a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/model/StatemachineDSL.xcore
@@ -0,0 +1,583 @@
+@GenModel(fileExtensions="statemachine")
+@GenModel(modelName="StatemachineDSL")
+@GenModel(prefix="StatemachineDSL")
+@GenModel(updateClasspath="false")
+@GenModel(copyrightText="Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		Joerg Riegel - Initial implementation 
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/xtext/statemachine/StatemachineDSL")
+@Ecore(nsPrefix="statemachinedsl")
+@Ecore(rootPackage="statemachinedsl")
+package org.eclipse.osbp.xtext.statemachine
+
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup
+import org.eclipse.osbp.xtext.reportdsl.Report
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.InternalEObject
+
+class StatemachineModel {
+	contains StatemachinePackage[] packages
+}
+
+type InternalEObject wraps InternalEObject
+
+class StatemachineLazyResolver {
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource().resourceSet);
+	}
+}
+
+class StatemachineBase extends StatemachineLazyResolver{
+	String name
+}
+
+class StatemachinePackage extends LPackage{
+	contains Statemachine[] statemachines
+}
+
+class Statemachine extends StatemachineBase{
+	boolean description
+	String descriptionValue
+	refers FunctionLibraryStatemachineGroup functionGroup
+	refers StatemachineEvent initialEvent
+	refers StatemachineState initialState
+	contains StatemachineEvent[] events
+	contains StatemachineControl[] controls
+	contains StatemachineState[] states
+}
+
+interface StatemachineControl extends StatemachineBase{
+}
+
+class StatemachineControlButton extends StatemachineControl, StatemachineControlVisibility{
+	StatemachineControlButtonEventType eventType	
+	contains StatemachineControlButtonAttribute[] buttons
+}
+
+class StatemachineControlField extends StatemachineControl{
+	contains StatemachineControlFieldAttribute[] fields
+	contains StatemachineControlFieldLayout[] layouts
+}
+
+class StatemachineControlDTO extends StatemachineControl{
+	contains StatemachineControlDTOAttribute[] dtos
+}
+
+class StatemachineControlScheduler extends StatemachineControl{
+	contains StatemachineControlSchedulerAttribute[] schedulers
+}
+
+class StatemachineControlPeripheral extends StatemachineControl{
+	contains StatemachinePeripheralDeviceLineDisplay[] lineDisplays
+	contains StatemachinePeripheralDevicePOSPrinter[] posPrinters
+	contains StatemachinePeripheralDeviceCashDrawer[] cashDrawers
+	contains StatemachinePeripheralDevicePT[] paymentTerminals
+}
+
+class StatemachineControlButtonAttribute extends StatemachineControlVisibility{
+	boolean hasImage
+	String image
+	contains StatemachineControlButtonAttributeEvent event 
+}
+
+interface StatemachineControlButtonAttributeEvent extends StatemachineLazyResolver {
+}
+
+class StatemachineControlButtonAttributeEventKeyboard extends StatemachineControlButtonAttributeEvent {
+	String keystroke
+}
+
+class StatemachineControlButtonAttributeEventIdentity extends StatemachineControlButtonAttributeEvent {
+	int identity
+}
+
+class StatemachineControlButtonAttributeEventEvent extends StatemachineControlButtonAttributeEvent {
+	refers StatemachineEvent event
+}
+
+interface StatemachineControlVisibility extends StatemachineBase{
+}
+
+class StatemachineControlFieldAttribute extends StatemachineControlVisibility{
+	contains StatemachineFieldType attributeType
+}
+
+class StatemachineControlFieldLayout extends StatemachineControlVisibility{
+}
+
+class StatemachineControlDTOAttribute extends StatemachineBase{
+	contains StatemachineDTOType attributeType
+	boolean hasEvent
+	refers StatemachineEvent event
+}
+
+interface StatemachinePeripheralDevice extends StatemachineBase {
+}
+
+class StatemachinePeripheralDeviceLineDisplay extends StatemachinePeripheralDevice {
+} 
+class StatemachinePeripheralDevicePOSPrinter extends StatemachinePeripheralDevice {
+} 
+class StatemachinePeripheralDeviceCashDrawer extends StatemachinePeripheralDevice {
+} 
+class StatemachinePeripheralDevicePT extends StatemachinePeripheralDevice {
+} 
+
+class StatemachineControlSchedulerAttribute extends StatemachineBase{
+	int delay 
+	refers StatemachineEvent event
+}
+
+class StatemachineEvent extends StatemachineBase{
+}
+
+class StatemachineState extends StatemachineBase{
+	contains StatemachineTrigger[] triggers
+	contains StatemachineOperation identity
+	refers StatemachineControlFieldAttribute keystroke
+	boolean hasKeyOperation
+	contains StatemachineOperation keyOperation
+}
+
+class StatemachineTrigger extends StatemachineLazyResolver{
+	boolean hasTransition
+	refers StatemachineState transition
+	refers StatemachineEvent[] triggers
+	contains StatemachineGuard[] guards
+	contains StatemachineAction[] actions
+}
+
+interface StatemachineAction extends StatemachineLazyResolver{
+}
+
+class StatemachineActionPeripheralBlinkRate extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int blinkRate
+}
+
+class StatemachineActionPeripheralClear extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+}
+
+class StatemachineActionPeripheralCreateWindow extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int viewportRow
+	int viewportColumn
+	int viewportHeight
+	int viewportWidth
+	int windowHeight
+	int windowWidth
+}
+
+class StatemachineActionPeripheralCursorType extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	StatemachineLineDisplayCursorType cursorType
+}
+
+class StatemachineActionPeripheralDestroyWindow extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+}
+
+class StatemachineActionPeripheralDeviceBrightness extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int brightness
+}
+
+class StatemachineActionPeripheralDisplayBitmap extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int bitmapId
+}
+
+class StatemachineActionPeripheralDisplayText extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	contains StatemachineActionFieldConcatenation text
+	boolean hasType
+	StatemachineLineDisplayTextType textType
+}
+
+class StatemachineActionPeripheralDisplayTextAt extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int row
+	int column
+	contains StatemachineActionFieldConcatenation text
+	boolean hasType
+	StatemachineLineDisplayTextType textType
+}
+
+class StatemachineActionPeripheralInterCharacterWait extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int wait
+}
+
+class StatemachineActionPeripheralMarqueeFormat extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	StatemachineLineDisplayMarqueeFormat format
+}
+
+class StatemachineActionPeripheralMarqueeRepeatWait extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int wait
+}
+
+class StatemachineActionPeripheralMarqueeType extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	StatemachineLineDisplayMarqueeType marqueeType
+}
+
+class StatemachineActionPeripheralMarqueeUnitWait extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	int wait
+}
+
+class StatemachineActionPeripheralScroll extends StatemachineAction {
+	refers StatemachinePeripheralDeviceLineDisplay device
+	StatemachineLineDisplayScrollTextType direction
+	int units
+}
+
+class StatemachineActionPeripheralOpenDrawer extends StatemachineAction {
+	refers StatemachinePeripheralDeviceCashDrawer device
+}
+
+class StatemachineActionPeripheralPrintBarcode extends StatemachineAction {
+	refers StatemachinePeripheralDevicePOSPrinter device
+	String data
+	StatemachinePOSPrinterBarcodeType barcodeType
+}
+
+class StatemachineActionPeripheralPrintBitmap extends StatemachineAction {
+	refers StatemachinePeripheralDevicePOSPrinter device
+	int bitmapId
+}
+
+class StatemachineActionPeripheralPrintCut extends StatemachineAction {
+	refers StatemachinePeripheralDevicePOSPrinter device
+	contains StatemachineActionFieldConcatenation text
+}
+
+class StatemachineActionPeripheralPrintRegisterBitmap extends StatemachineAction {
+	refers StatemachinePeripheralDevicePOSPrinter device
+	int bitmapId
+	String name
+}
+
+class StatemachineActionPeripheralPrintNormal extends StatemachineAction {
+	refers StatemachinePeripheralDevicePOSPrinter device
+	contains StatemachineActionFieldConcatenation text
+	StatemachinePOSPrinterBarcodeType barcodeType
+}
+
+class StatemachineActionPeripheralPTOpen extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+	contains StatemachineActionFieldConcatenation host 
+	contains StatemachineActionFieldConcatenation port 
+}
+
+class StatemachineActionPeripheralPTClose extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+}
+
+//class StatemachineActionPeripheralPTBalanceRequest extends StatemachineActionFieldSource {
+//	refers StatemachinePeripheralDevicePT device
+//}
+//
+//class StatemachineActionPeripheralPTPrepaidTopUp extends StatemachineAction {
+//	refers StatemachinePeripheralDevicePT device
+//	contains StatemachineActionFieldConcatenation source
+//}
+//
+class StatemachineActionPeripheralPTReversal extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+	contains StatemachineActionFieldConcatenation password
+	contains StatemachineActionFieldConcatenation receipt
+}
+
+class StatemachineActionPeripheralPTAcknowledge extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+}
+
+class StatemachineActionPeripheralPTRegistration extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+	contains StatemachineActionFieldConcatenation password
+	String configuration
+}
+
+class StatemachineActionPeripheralPTAuthorization extends StatemachineAction {
+	refers StatemachinePeripheralDevicePT device
+	contains StatemachineActionFieldConcatenation amount
+}
+
+class StatemachineActionPeripheralPTResponse extends StatemachineActionFieldSource {
+	refers StatemachinePeripheralDevicePT device
+}
+
+class StatemachineActionPeripheralPrintReport extends StatemachineAction {
+	refers Report report
+	refers StatemachineStorage key
+	boolean hasFilter
+}
+
+interface StatemachineActionFieldSource extends StatemachineAction {
+}
+
+class StatemachineActionFieldSourceString extends StatemachineActionFieldSource {
+	String text
+} 
+
+class StatemachineActionFieldSourceNumber extends StatemachineActionFieldSource {
+	Double value
+}
+
+class StatemachineActionFieldSourceEvaluate extends StatemachineActionFieldSource {
+	StatemachineEvaluationType evaluationtype	
+}
+
+class StatemachineActionFieldSourceTranslate extends StatemachineActionFieldSource {
+	String text	
+}
+
+class StatemachineActionFieldSourceDtoAttribute extends StatemachineActionFieldSource {
+	refers StatemachineControlDTOAttribute dto
+	refers LDtoInheritedAttribute attribute
+}
+
+class StatemachineActionFieldSourceEvent extends StatemachineActionFieldSource {
+}
+
+class StatemachineActionConditionalTransition extends StatemachineAction {
+	refers StatemachineState transition
+	contains StatemachineGuard guard
+	contains StatemachineAction[] actions
+}
+
+class StatemachineOperationParameter extends StatemachineAction {
+	contains StatemachineActionFieldConcatenation source
+}
+
+class StatemachineOperation extends StatemachineActionFieldSource {
+	refers FunctionLibraryOperation operation
+	contains StatemachineOperationParameter first
+	contains StatemachineOperationParameter[] more
+}
+
+class StatemachineGuard extends StatemachineLazyResolver{
+	refers FunctionLibraryGuard guard
+	boolean hasOnFail
+	String onFailDescription
+	String onFailCaption
+	StatemachineUserMessageType onFailType
+}
+
+class StatemachineFunction extends StatemachineActionFieldSource {
+	refers FunctionLibraryFunction function
+	contains StatemachineOperationParameter first
+	contains StatemachineOperationParameter[] more
+}
+
+class StatemachineStorageRetrieve extends StatemachineActionFieldSource {
+	String key
+	String attribute
+}
+
+class StatemachineStorage extends StatemachineAction {
+	String key
+	String attribute
+	contains StatemachineActionFieldConcatenation content
+}
+
+class StatemachineActionFieldConcatenation extends StatemachineAction {
+	contains StatemachineActionFieldSource first
+	contains StatemachineActionFieldSource[] more  
+}
+
+class StatemachineActionFieldSet extends StatemachineAction {
+	refers StatemachineControlFieldAttribute attribute
+	contains StatemachineActionFieldConcatenation source
+}
+
+class StatemachineActionFieldKeystroke extends StatemachineAction {
+	refers StatemachineControlFieldAttribute attribute
+	String keystroke
+}
+
+class StatemachineActionFieldClear extends StatemachineAction {
+	refers StatemachineControlFieldAttribute attribute
+}
+
+class StatemachineActionFieldGet extends StatemachineActionFieldSource {
+	refers StatemachineControlFieldAttribute attribute
+}
+
+class StatemachineActionFieldRemove extends StatemachineActionFieldSource {
+	refers StatemachineControlFieldAttribute attribute
+}
+
+class StatemachineActionItemVisible extends StatemachineAction {
+	refers StatemachineControlVisibility attribute
+}
+
+class StatemachineActionItemInvisible extends StatemachineAction {
+	refers StatemachineControlVisibility attribute
+}
+
+class StatemachineActionButtonCaption extends StatemachineAction {
+	refers StatemachineControlButtonAttribute attribute
+	contains StatemachineActionFieldConcatenation caption
+}
+
+class StatemachineActionButtonImage extends StatemachineAction {
+	refers StatemachineControlButtonAttribute attribute
+	String image
+}
+
+class StatemachineActionDTOFind extends StatemachineAction {
+	refers StatemachineControlDTOAttribute dto
+	refers LDtoInheritedAttribute attribute
+	contains StatemachineActionFieldConcatenation search
+}
+
+class StatemachineActionScheduler extends StatemachineAction {
+	refers StatemachineControlSchedulerAttribute scheduler
+}
+
+class StatemachineDTOType extends StatemachineLazyResolver{
+	refers LDto attributeType
+}
+
+class StatemachineFieldType extends StatemachineLazyResolver {
+	StatemachineInternalType attributeType
+}
+
+enum StatemachineInternalType {
+	BOOLEAN as 'Boolean'
+	INTEGER as 'Integer'
+	LONG as 'Long'
+	DOUBLE as 'Double'
+	STRING as 'String'
+	DATE as 'Date'
+	SUGGESTTEXT as 'SuggestText'
+}
+
+enum StatemachineControlButtonEventType {
+	KEYBOARD as 'keyboard'
+	TRIGGER as 'trigger'
+	IDENTITY as 'identity'
+}
+
+enum StatemachineEvaluationType {
+	IP_ADDRESS 		as 'getIPAddress'
+	NOW 			as 'getNow'
+	USER_AGENT_INFO as 'getUserAgentInfo'
+	IS_TOUCH_DEVICE as 'isTouchDevice'
+	IS_HTTPS 		as 'isHttps'
+	BROWSER_LOCALE 	as 'getBrowserLocale'
+	USER_NAME		as 'getUserName'
+	USER_PASSWORD	as 'getUserPassword'
+	USER_EMAIL		as 'getUserEmail'
+	USER_POSITION	as 'getUserPosition'
+	USER_PRTSERVICE	as 'getUserPrintService'
+	SCREEN_WIDTH 	as 'getSceenWidth'
+	SCREEN_HEIGHT 	as 'getScreenHeight'
+	TRIGGER			as 'getTrigger'
+}
+
+enum StatemachineUserMessageType {
+	HUMANIZED_MESSAGE		as 'humanized'
+	WARNING_MESSAGE			as 'warning'
+	ERROR_MESSAGE			as 'error'
+	TRAY_NOTIFICATION		as 'tray'
+	ASSISTIVE_NOTIFICATION	as 'assistive'
+}
+
+enum StatemachineLineDisplayCursorType {
+	DISP_CT_NONE		as 'none'     
+	DISP_CT_FIXED    	as 'fixed'
+	DISP_CT_BLOCK    	as 'block'
+	DISP_CT_HALFBLOCK	as 'halfblock'
+	DISP_CT_UNDERLINE	as 'underline'
+	DISP_CT_REVERSE  	as 'reverse'
+	DISP_CT_OTHER    	as 'other'
+	DISP_CT_BLINK		as 'blink'
+}
+
+enum StatemachineLineDisplayMarqueeType {
+	DISP_MT_NONE         as 'none'
+	DISP_MT_UP           as 'up'
+	DISP_MT_DOWN         as 'down'
+	DISP_MT_LEFT         as 'left'
+	DISP_MT_RIGHT        as 'right'
+	DISP_MT_INIT         as 'init'
+}
+
+enum StatemachineLineDisplayMarqueeFormat {
+	DISP_MF_WALK         as 'walk'
+	DISP_MF_PLACE        as 'place'
+}
+
+enum StatemachineLineDisplayTextType {
+	DISP_DT_NORMAL        as  'normal'
+	DISP_DT_BLINK         as  'blink'
+	DISP_DT_REVERSE       as  'reverse'
+	DISP_DT_BLINK_REVERSE as  'blinkreverse'
+}
+
+enum StatemachineLineDisplayScrollTextType {
+	DISP_ST_UP           as 'up'
+	DISP_ST_DOWN         as 'down'
+	DISP_ST_LEFT         as 'left'
+	DISP_ST_RIGHT        as 'right'
+}
+
+enum StatemachinePOSPrinterBarcodeType {
+	PTR_BCS_UPCA           as 'upca'
+	PTR_BCS_UPCE           as 'upcb'
+	PTR_BCS_JAN8           as 'jan8'
+	PTR_BCS_EAN8           as 'ean8'
+	PTR_BCS_JAN13          as 'jan13'
+	PTR_BCS_EAN13          as 'ean13'
+	PTR_BCS_TF             as 'tf'
+	PTR_BCS_ITF            as 'itf'
+	PTR_BCS_Codabar        as 'codeabar'
+	PTR_BCS_Code39         as 'code39'
+	PTR_BCS_Code93         as 'code93'
+	PTR_BCS_Code128        as 'code128'
+	PTR_BCS_UPCA_S         as 'upca_s'
+	PTR_BCS_UPCE_S         as 'upce_s'
+	PTR_BCS_UPCD1          as 'upcd1'
+	PTR_BCS_UPCD2          as 'upcd2'
+	PTR_BCS_UPCD3          as 'upcd3'
+	PTR_BCS_UPCD4          as 'upcd4'
+	PTR_BCS_UPCD5          as 'upcd5'
+	PTR_BCS_EAN8_S         as 'ean8_s'
+	PTR_BCS_EAN13_S        as 'ean13_s'
+	PTR_BCS_EAN128         as 'ean128'
+	PTR_BCS_OCRA           as 'orca'
+	PTR_BCS_OCRB           as 'ocrb'
+	PTR_BCS_Code128_Parsed as 'code128_parsed'
+	PTR_BCS_GS1DATABAR     as 'gs1databar'
+	PTR_BCS_GS1DATABAR_E   as 'gs1databar_e'
+	PTR_BCS_GS1DATABAR_S   as 'gs1databar_s'
+	PTR_BCS_GS1DATABAR_E_S as 'gs1databar_e_s'
+	PTR_BCS_PDF417         as 'pdf417'
+	PTR_BCS_MAXICODE       as 'maxicode'
+	PTR_BCS_DATAMATRIX     as 'datamatrix'
+	PTR_BCS_QRCODE         as 'qrcode'
+	PTR_BCS_UQRCODE        as 'uqrcode'
+	PTR_BCS_AZTEC          as 'aztec'
+	PTR_BCS_UPDF417        as 'updf417'
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine/notice.html b/org.eclipse.osbp.xtext.statemachine/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/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.statemachine/plugin.properties b/org.eclipse.osbp.xtext.statemachine/plugin.properties
new file mode 100644
index 0000000..dfd691a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2014, Loetz GmbH&Co.KG (Heidelberg)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  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 = DataDSL Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.statemachine/plugin.xml b/org.eclipse.osbp.xtext.statemachine/plugin.xml
new file mode 100644
index 0000000..b5fb783
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated StatemachineDSL -->
+      <package
+            uri="http://osbp.eclipse.org/xtext/statemachine/StatemachineDSL"
+            class="org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage"
+            genModel="model/StatemachineDSL.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.statemachine/pom.xml b/org.eclipse.osbp.xtext.statemachine/pom.xml
new file mode 100644
index 0000000..c80dc77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/pom.xml
@@ -0,0 +1,31 @@
+<?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:
+# 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.statemachine</groupId>
+        <artifactId>org.eclipse.osbp.xtext.statemachine.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.statemachine</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+
+	</project>
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/AbstractStatemachineDSLRuntimeModule.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/AbstractStatemachineDSLRuntimeModule.java
new file mode 100644
index 0000000..6d96e75
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/AbstractStatemachineDSLRuntimeModule.java
@@ -0,0 +1,352 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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.statemachine.StatemachineDSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractStatemachineDSLRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/xtext/statemachine/StatemachineDSL.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.xtext.statemachine.StatemachineDSL");
+	}
+	
+	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("statemachine");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.xtext.statemachine.serializer.StatemachineDSLSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.xtext.statemachine.serializer.StatemachineDSLSyntacticSequencer.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.statemachine.parser.antlr.StatemachineDSLParser.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.statemachine.parser.antlr.StatemachineDSLAntlrTokenFileProvider.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.statemachine.parser.antlr.internal.InternalStatemachineDSLLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.xtext.statemachine.parser.antlr.internal.InternalStatemachineDSLLexer> provideInternalStatemachineDSLLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.statemachine.parser.antlr.internal.InternalStatemachineDSLLexer.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.statemachine.parser.antlr.internal.InternalStatemachineDSLLexer.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.statemachine.validation.StatemachineDSLValidator> bindStatemachineDSLValidator() {
+		return org.eclipse.osbp.xtext.statemachine.validation.StatemachineDSLValidator.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.statemachine.formatting.StatemachineDSLFormatter.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.statemachine.jvmmodel.StatemachineDSLJvmModelInferrer.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.statemachine.services.StatemachineDSLGrammarAccess.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetupGenerated.java
new file mode 100644
index 0000000..9fdf518
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetupGenerated.java
@@ -0,0 +1,52 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+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 StatemachineDSLStandaloneSetupGenerated 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.statemachine.StatemachineDSLRuntimeModule());
+	}
+	
+	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("statemachine", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("statemachine", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLAntlrTokenFileProvider.java
new file mode 100644
index 0000000..4071e92
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLAntlrTokenFileProvider.java
@@ -0,0 +1,25 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class StatemachineDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLParser.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLParser.java
new file mode 100644
index 0000000..ec51c3a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/StatemachineDSLParser.java
@@ -0,0 +1,49 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.statemachine.services.StatemachineDSLGrammarAccess;
+
+public class StatemachineDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private StatemachineDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.xtext.statemachine.parser.antlr.internal.InternalStatemachineDSLParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.xtext.statemachine.parser.antlr.internal.InternalStatemachineDSLParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "StatemachineModel";
+	}
+	
+	public StatemachineDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(StatemachineDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g
new file mode 100644
index 0000000..8df2423
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+grammar InternalStatemachineDSL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.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.statemachine.services.StatemachineDSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private StatemachineDSLGrammarAccess grammarAccess;
+ 	
+    public InternalStatemachineDSLParser(TokenStream input, StatemachineDSLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "StatemachineModel";	
+   	}
+   	
+   	@Override
+   	protected StatemachineDSLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleStatemachineModel
+entryRuleStatemachineModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineModelRule()); }
+	 iv_ruleStatemachineModel=ruleStatemachineModel 
+	 { $current=$iv_ruleStatemachineModel.current; } 
+	 EOF 
+;
+
+// Rule StatemachineModel
+ruleStatemachineModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineModelAccess().getPackagesStatemachinePackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleStatemachinePackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"StatemachinePackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachinePackage
+entryRuleStatemachinePackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachinePackageRule()); }
+	 iv_ruleStatemachinePackage=ruleStatemachinePackage 
+	 { $current=$iv_ruleStatemachinePackage.current; } 
+	 EOF 
+;
+
+// Rule StatemachinePackage
+ruleStatemachinePackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachinePackageAccess().getStatemachinePackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachinePackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachinePackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getImportsStatemachineImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleStatemachineImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"StatemachineImport");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getStatemachinesStatemachineParserRuleCall_3_2_0()); 
+	    }
+		lv_statemachines_5_0=ruleStatemachine		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+	        }
+       		add(
+       			$current, 
+       			"statemachines",
+        		lv_statemachines_5_0, 
+        		"Statemachine");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStatemachinePackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachine
+entryRuleStatemachine returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineRule()); }
+	 iv_ruleStatemachine=ruleStatemachine 
+	 { $current=$iv_ruleStatemachine.current; } 
+	 EOF 
+;
+
+// Rule Statemachine
+ruleStatemachine returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='statemachine' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineAccess().getStatemachineKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)((
+(
+		lv_description_2_0=	'described by' 
+    {
+        newLeafNode(lv_description_2_0, grammarAccess.getStatemachineAccess().getDescriptionDescribedByKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineRule());
+	        }
+       		setWithLastConsumed($current, "description", true, "described by");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0()); 
+	    }
+		lv_descriptionValue_3_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+	        }
+       		set(
+       			$current, 
+       			"descriptionValue",
+        		lv_descriptionValue_3_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='functiongroup' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineAccess().getFunctiongroupKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getStatemachineAccess().getFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0()); 
+	}
+
+)
+))?	otherlv_6='initialState' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStatemachineAccess().getInitialStateKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineRule());
+	        }
+        }
+	otherlv_7=RULE_ID
+	{
+		newLeafNode(otherlv_7, grammarAccess.getStatemachineAccess().getInitialStateStatemachineStateCrossReference_5_0()); 
+	}
+
+)
+)	otherlv_8='initialEvent' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getStatemachineAccess().getInitialEventKeyword_6());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineRule());
+	        }
+        }
+	otherlv_9=RULE_ID
+	{
+		newLeafNode(otherlv_9, grammarAccess.getStatemachineAccess().getInitialEventStatemachineEventCrossReference_7_0()); 
+	}
+
+)
+)(	otherlv_10='events' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getStatemachineAccess().getEventsKeyword_8_0());
+    }
+(	otherlv_11='{' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_8_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineAccess().getEventsStatemachineEventParserRuleCall_8_1_1_0()); 
+	    }
+		lv_events_12_0=ruleStatemachineEvent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+	        }
+       		add(
+       			$current, 
+       			"events",
+        		lv_events_12_0, 
+        		"StatemachineEvent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_8_1_2());
+    }
+))(	otherlv_14='controls' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getStatemachineAccess().getControlsKeyword_9_0());
+    }
+	otherlv_15='{' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineAccess().getControlsStatemachineControlParserRuleCall_9_2_0()); 
+	    }
+		lv_controls_16_0=ruleStatemachineControl		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+	        }
+       		add(
+       			$current, 
+       			"controls",
+        		lv_controls_16_0, 
+        		"StatemachineControl");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_17='}' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_9_3());
+    }
+)(	otherlv_18='states' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getStatemachineAccess().getStatesKeyword_10_0());
+    }
+	otherlv_19='{' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_10_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineAccess().getStatesStatemachineStateParserRuleCall_10_2_0()); 
+	    }
+		lv_states_20_0=ruleStatemachineState		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+	        }
+       		add(
+       			$current, 
+       			"states",
+        		lv_states_20_0, 
+        		"StatemachineState");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_21='}' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_10_3());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineEvent
+entryRuleStatemachineEvent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineEventRule()); }
+	 iv_ruleStatemachineEvent=ruleStatemachineEvent 
+	 { $current=$iv_ruleStatemachineEvent.current; } 
+	 EOF 
+;
+
+// Rule StatemachineEvent
+ruleStatemachineEvent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='event' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineEventAccess().getEventKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineEventAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineEventRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineState
+entryRuleStatemachineState returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineStateRule()); }
+	 iv_ruleStatemachineState=ruleStatemachineState 
+	 { $current=$iv_ruleStatemachineState.current; } 
+	 EOF 
+;
+
+// Rule StatemachineState
+ruleStatemachineState returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='state' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineStateAccess().getStateKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineStateAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStateRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0);
+	 				}
+					({true}?=>(	otherlv_4='triggers' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0());
+    }
+	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getTriggersStatemachineTriggerParserRuleCall_3_0_2_0()); 
+	    }
+		lv_triggers_6_0=ruleStatemachineTrigger		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+	        }
+       		add(
+       			$current, 
+       			"triggers",
+        		lv_triggers_6_0, 
+        		"StatemachineTrigger");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1);
+	 				}
+					({true}?=>(	otherlv_8='identity' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getStatemachineStateAccess().getIdentityKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getIdentityStatemachineOperationParserRuleCall_3_1_1_0()); 
+	    }
+		lv_identity_9_0=ruleStatemachineOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+	        }
+       		set(
+       			$current, 
+       			"identity",
+        		lv_identity_9_0, 
+        		"StatemachineOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2);
+	 				}
+					({true}?=>(	otherlv_10='keystroke' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getStatemachineStateAccess().getKeystrokeKeyword_3_2_0());
+    }
+	otherlv_11='@' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getStatemachineStateAccess().getCommercialAtKeyword_3_2_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStateRule());
+	        }
+        }
+	otherlv_12=RULE_ID
+	{
+		newLeafNode(otherlv_12, grammarAccess.getStatemachineStateAccess().getKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0()); 
+	}
+
+)
+)((
+(
+		lv_hasKeyOperation_13_0=	'and' 
+    {
+        newLeafNode(lv_hasKeyOperation_13_0, grammarAccess.getStatemachineStateAccess().getHasKeyOperationAndKeyword_3_2_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStateRule());
+	        }
+       		setWithLastConsumed($current, "hasKeyOperation", true, "and");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getKeyOperationStatemachineOperationParserRuleCall_3_2_3_1_0()); 
+	    }
+		lv_keyOperation_14_0=ruleStatemachineOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+	        }
+       		set(
+       			$current, 
+       			"keyOperation",
+        		lv_keyOperation_14_0, 
+        		"StatemachineOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+	}
+
+)	otherlv_15='}' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineTrigger
+entryRuleStatemachineTrigger returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineTriggerRule()); }
+	 iv_ruleStatemachineTrigger=ruleStatemachineTrigger 
+	 { $current=$iv_ruleStatemachineTrigger.current; } 
+	 EOF 
+;
+
+// Rule StatemachineTrigger
+ruleStatemachineTrigger returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineTriggerAccess().getStatemachineTriggerAction_0(),
+            $current);
+    }
+)	otherlv_1='trigger' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineTriggerAccess().getTriggerKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getStatemachineTriggerAccess().getTriggersStatemachineEventCrossReference_2_0()); 
+	}
+
+)
+)*(	otherlv_3='guards' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineTriggerAccess().getGuardsKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineTriggerAccess().getGuardsStatemachineGuardParserRuleCall_3_2_0()); 
+	    }
+		lv_guards_5_0=ruleStatemachineGuard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineTriggerRule());
+	        }
+       		add(
+       			$current, 
+       			"guards",
+        		lv_guards_5_0, 
+        		"StatemachineGuard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?	otherlv_7='actions' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStatemachineTriggerAccess().getActionsKeyword_4());
+    }
+((
+(
+		lv_hasTransition_8_0=	'transition' 
+    {
+        newLeafNode(lv_hasTransition_8_0, grammarAccess.getStatemachineTriggerAccess().getHasTransitionTransitionKeyword_5_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+	        }
+       		setWithLastConsumed($current, "hasTransition", true, "transition");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+	        }
+        }
+	otherlv_9=RULE_ID
+	{
+		newLeafNode(otherlv_9, grammarAccess.getStatemachineTriggerAccess().getTransitionStatemachineStateCrossReference_5_1_0()); 
+	}
+
+)
+))?	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineTriggerAccess().getActionsStatemachineActionParserRuleCall_7_0()); 
+	    }
+		lv_actions_11_0=ruleStatemachineAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineTriggerRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_11_0, 
+        		"StatemachineAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineAction
+entryRuleStatemachineAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionRule()); }
+	 iv_ruleStatemachineAction=ruleStatemachineAction 
+	 { $current=$iv_ruleStatemachineAction.current; } 
+	 EOF 
+;
+
+// Rule StatemachineAction
+ruleStatemachineAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralBlinkRateParserRuleCall_0()); 
+    }
+    this_StatemachineActionPeripheralBlinkRate_0=ruleStatemachineActionPeripheralBlinkRate
+    { 
+        $current = $this_StatemachineActionPeripheralBlinkRate_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralClearParserRuleCall_1()); 
+    }
+    this_StatemachineActionPeripheralClear_1=ruleStatemachineActionPeripheralClear
+    { 
+        $current = $this_StatemachineActionPeripheralClear_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCreateWindowParserRuleCall_2()); 
+    }
+    this_StatemachineActionPeripheralCreateWindow_2=ruleStatemachineActionPeripheralCreateWindow
+    { 
+        $current = $this_StatemachineActionPeripheralCreateWindow_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCursorTypeParserRuleCall_3()); 
+    }
+    this_StatemachineActionPeripheralCursorType_3=ruleStatemachineActionPeripheralCursorType
+    { 
+        $current = $this_StatemachineActionPeripheralCursorType_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDestroyWindowParserRuleCall_4()); 
+    }
+    this_StatemachineActionPeripheralDestroyWindow_4=ruleStatemachineActionPeripheralDestroyWindow
+    { 
+        $current = $this_StatemachineActionPeripheralDestroyWindow_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5()); 
+    }
+    this_StatemachineActionPeripheralDeviceBrightness_5=ruleStatemachineActionPeripheralDeviceBrightness
+    { 
+        $current = $this_StatemachineActionPeripheralDeviceBrightness_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayBitmapParserRuleCall_6()); 
+    }
+    this_StatemachineActionPeripheralDisplayBitmap_6=ruleStatemachineActionPeripheralDisplayBitmap
+    { 
+        $current = $this_StatemachineActionPeripheralDisplayBitmap_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextParserRuleCall_7()); 
+    }
+    this_StatemachineActionPeripheralDisplayText_7=ruleStatemachineActionPeripheralDisplayText
+    { 
+        $current = $this_StatemachineActionPeripheralDisplayText_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextAtParserRuleCall_8()); 
+    }
+    this_StatemachineActionPeripheralDisplayTextAt_8=ruleStatemachineActionPeripheralDisplayTextAt
+    { 
+        $current = $this_StatemachineActionPeripheralDisplayTextAt_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9()); 
+    }
+    this_StatemachineActionPeripheralInterCharacterWait_9=ruleStatemachineActionPeripheralInterCharacterWait
+    { 
+        $current = $this_StatemachineActionPeripheralInterCharacterWait_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeFormatParserRuleCall_10()); 
+    }
+    this_StatemachineActionPeripheralMarqueeFormat_10=ruleStatemachineActionPeripheralMarqueeFormat
+    { 
+        $current = $this_StatemachineActionPeripheralMarqueeFormat_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11()); 
+    }
+    this_StatemachineActionPeripheralMarqueeRepeatWait_11=ruleStatemachineActionPeripheralMarqueeRepeatWait
+    { 
+        $current = $this_StatemachineActionPeripheralMarqueeRepeatWait_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeTypeParserRuleCall_12()); 
+    }
+    this_StatemachineActionPeripheralMarqueeType_12=ruleStatemachineActionPeripheralMarqueeType
+    { 
+        $current = $this_StatemachineActionPeripheralMarqueeType_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13()); 
+    }
+    this_StatemachineActionPeripheralMarqueeUnitWait_13=ruleStatemachineActionPeripheralMarqueeUnitWait
+    { 
+        $current = $this_StatemachineActionPeripheralMarqueeUnitWait_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralScrollParserRuleCall_14()); 
+    }
+    this_StatemachineActionPeripheralScroll_14=ruleStatemachineActionPeripheralScroll
+    { 
+        $current = $this_StatemachineActionPeripheralScroll_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralOpenDrawerParserRuleCall_15()); 
+    }
+    this_StatemachineActionPeripheralOpenDrawer_15=ruleStatemachineActionPeripheralOpenDrawer
+    { 
+        $current = $this_StatemachineActionPeripheralOpenDrawer_15.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBarcodeParserRuleCall_16()); 
+    }
+    this_StatemachineActionPeripheralPrintBarcode_16=ruleStatemachineActionPeripheralPrintBarcode
+    { 
+        $current = $this_StatemachineActionPeripheralPrintBarcode_16.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBitmapParserRuleCall_17()); 
+    }
+    this_StatemachineActionPeripheralPrintBitmap_17=ruleStatemachineActionPeripheralPrintBitmap
+    { 
+        $current = $this_StatemachineActionPeripheralPrintBitmap_17.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintCutParserRuleCall_18()); 
+    }
+    this_StatemachineActionPeripheralPrintCut_18=ruleStatemachineActionPeripheralPrintCut
+    { 
+        $current = $this_StatemachineActionPeripheralPrintCut_18.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintNormalParserRuleCall_19()); 
+    }
+    this_StatemachineActionPeripheralPrintNormal_19=ruleStatemachineActionPeripheralPrintNormal
+    { 
+        $current = $this_StatemachineActionPeripheralPrintNormal_19.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20()); 
+    }
+    this_StatemachineActionPeripheralPrintRegisterBitmap_20=ruleStatemachineActionPeripheralPrintRegisterBitmap
+    { 
+        $current = $this_StatemachineActionPeripheralPrintRegisterBitmap_20.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTOpenParserRuleCall_21()); 
+    }
+    this_StatemachineActionPeripheralPTOpen_21=ruleStatemachineActionPeripheralPTOpen
+    { 
+        $current = $this_StatemachineActionPeripheralPTOpen_21.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTCloseParserRuleCall_22()); 
+    }
+    this_StatemachineActionPeripheralPTClose_22=ruleStatemachineActionPeripheralPTClose
+    { 
+        $current = $this_StatemachineActionPeripheralPTClose_22.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23()); 
+    }
+    this_StatemachineActionPeripheralPTAcknowledge_23=ruleStatemachineActionPeripheralPTAcknowledge
+    { 
+        $current = $this_StatemachineActionPeripheralPTAcknowledge_23.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTReversalParserRuleCall_24()); 
+    }
+    this_StatemachineActionPeripheralPTReversal_24=ruleStatemachineActionPeripheralPTReversal
+    { 
+        $current = $this_StatemachineActionPeripheralPTReversal_24.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTRegistrationParserRuleCall_25()); 
+    }
+    this_StatemachineActionPeripheralPTRegistration_25=ruleStatemachineActionPeripheralPTRegistration
+    { 
+        $current = $this_StatemachineActionPeripheralPTRegistration_25.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAuthorizationParserRuleCall_26()); 
+    }
+    this_StatemachineActionPeripheralPTAuthorization_26=ruleStatemachineActionPeripheralPTAuthorization
+    { 
+        $current = $this_StatemachineActionPeripheralPTAuthorization_26.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintReportParserRuleCall_27()); 
+    }
+    this_StatemachineActionPeripheralPrintReport_27=ruleStatemachineActionPeripheralPrintReport
+    { 
+        $current = $this_StatemachineActionPeripheralPrintReport_27.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldSetParserRuleCall_28()); 
+    }
+    this_StatemachineActionFieldSet_28=ruleStatemachineActionFieldSet
+    { 
+        $current = $this_StatemachineActionFieldSet_28.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldRemoveParserRuleCall_29()); 
+    }
+    this_StatemachineActionFieldRemove_29=ruleStatemachineActionFieldRemove
+    { 
+        $current = $this_StatemachineActionFieldRemove_29.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemVisibleParserRuleCall_30()); 
+    }
+    this_StatemachineActionItemVisible_30=ruleStatemachineActionItemVisible
+    { 
+        $current = $this_StatemachineActionItemVisible_30.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemInvisibleParserRuleCall_31()); 
+    }
+    this_StatemachineActionItemInvisible_31=ruleStatemachineActionItemInvisible
+    { 
+        $current = $this_StatemachineActionItemInvisible_31.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldClearParserRuleCall_32()); 
+    }
+    this_StatemachineActionFieldClear_32=ruleStatemachineActionFieldClear
+    { 
+        $current = $this_StatemachineActionFieldClear_32.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonCaptionParserRuleCall_33()); 
+    }
+    this_StatemachineActionButtonCaption_33=ruleStatemachineActionButtonCaption
+    { 
+        $current = $this_StatemachineActionButtonCaption_33.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonImageParserRuleCall_34()); 
+    }
+    this_StatemachineActionButtonImage_34=ruleStatemachineActionButtonImage
+    { 
+        $current = $this_StatemachineActionButtonImage_34.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionDTOFindParserRuleCall_35()); 
+    }
+    this_StatemachineActionDTOFind_35=ruleStatemachineActionDTOFind
+    { 
+        $current = $this_StatemachineActionDTOFind_35.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineStorageParserRuleCall_36()); 
+    }
+    this_StatemachineStorage_36=ruleStatemachineStorage
+    { 
+        $current = $this_StatemachineStorage_36.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionSchedulerParserRuleCall_37()); 
+    }
+    this_StatemachineActionScheduler_37=ruleStatemachineActionScheduler
+    { 
+        $current = $this_StatemachineActionScheduler_37.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineOperationParserRuleCall_38()); 
+    }
+    this_StatemachineOperation_38=ruleStatemachineOperation
+    { 
+        $current = $this_StatemachineOperation_38.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionConditionalTransitionParserRuleCall_39()); 
+    }
+    this_StatemachineActionConditionalTransition_39=ruleStatemachineActionConditionalTransition
+    { 
+        $current = $this_StatemachineActionConditionalTransition_39.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralBlinkRate
+entryRuleStatemachineActionPeripheralBlinkRate returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralBlinkRateRule()); }
+	 iv_ruleStatemachineActionPeripheralBlinkRate=ruleStatemachineActionPeripheralBlinkRate 
+	 { $current=$iv_ruleStatemachineActionPeripheralBlinkRate.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralBlinkRate
+ruleStatemachineActionPeripheralBlinkRate returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='blinkRate' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateKeyword_0());
+    }
+(
+(
+		lv_blinkRate_1_0=RULE_INT
+		{
+			newLeafNode(lv_blinkRate_1_0, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralBlinkRateRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"blinkRate",
+        		lv_blinkRate_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralBlinkRateRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralClear
+entryRuleStatemachineActionPeripheralClear returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralClearRule()); }
+	 iv_ruleStatemachineActionPeripheralClear=ruleStatemachineActionPeripheralClear 
+	 { $current=$iv_ruleStatemachineActionPeripheralClear.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralClear
+ruleStatemachineActionPeripheralClear returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='clearDevice' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralClearAccess().getClearDeviceKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralClearRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralClearAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralCreateWindow
+entryRuleStatemachineActionPeripheralCreateWindow returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralCreateWindowRule()); }
+	 iv_ruleStatemachineActionPeripheralCreateWindow=ruleStatemachineActionPeripheralCreateWindow 
+	 { $current=$iv_ruleStatemachineActionPeripheralCreateWindow.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralCreateWindow
+ruleStatemachineActionPeripheralCreateWindow returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='createWindow' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getCreateWindowKeyword_0());
+    }
+	otherlv_1='row' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getRowKeyword_1());
+    }
+(
+(
+		lv_viewportRow_2_0=RULE_INT
+		{
+			newLeafNode(lv_viewportRow_2_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportRowINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"viewportRow",
+        		lv_viewportRow_2_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_3='column' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getColumnKeyword_3());
+    }
+(
+(
+		lv_viewportColumn_4_0=RULE_INT
+		{
+			newLeafNode(lv_viewportColumn_4_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportColumnINTTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"viewportColumn",
+        		lv_viewportColumn_4_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_5='height' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getHeightKeyword_5());
+    }
+(
+(
+		lv_viewportHeight_6_0=RULE_INT
+		{
+			newLeafNode(lv_viewportHeight_6_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportHeightINTTerminalRuleCall_6_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"viewportHeight",
+        		lv_viewportHeight_6_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_7='width' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWidthKeyword_7());
+    }
+(
+(
+		lv_viewportWidth_8_0=RULE_INT
+		{
+			newLeafNode(lv_viewportWidth_8_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportWidthINTTerminalRuleCall_8_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"viewportWidth",
+        		lv_viewportWidth_8_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_9='windowHeight' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightKeyword_9());
+    }
+(
+(
+		lv_windowHeight_10_0=RULE_INT
+		{
+			newLeafNode(lv_windowHeight_10_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightINTTerminalRuleCall_10_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"windowHeight",
+        		lv_windowHeight_10_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_11='windowWidth' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthKeyword_11());
+    }
+(
+(
+		lv_windowWidth_12_0=RULE_INT
+		{
+			newLeafNode(lv_windowWidth_12_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthINTTerminalRuleCall_12_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"windowWidth",
+        		lv_windowWidth_12_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_13='@' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getCommercialAtKeyword_13());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+	        }
+        }
+	otherlv_14=RULE_ID
+	{
+		newLeafNode(otherlv_14, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralCursorType
+entryRuleStatemachineActionPeripheralCursorType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralCursorTypeRule()); }
+	 iv_ruleStatemachineActionPeripheralCursorType=ruleStatemachineActionPeripheralCursorType 
+	 { $current=$iv_ruleStatemachineActionPeripheralCursorType.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralCursorType
+ruleStatemachineActionPeripheralCursorType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='cursorType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_cursorType_1_0=ruleStatemachineLineDisplayCursorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralCursorTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"cursorType",
+        		lv_cursorType_1_0, 
+        		"StatemachineLineDisplayCursorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralCursorTypeRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDestroyWindow
+entryRuleStatemachineActionPeripheralDestroyWindow returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule()); }
+	 iv_ruleStatemachineActionPeripheralDestroyWindow=ruleStatemachineActionPeripheralDestroyWindow 
+	 { $current=$iv_ruleStatemachineActionPeripheralDestroyWindow.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDestroyWindow
+ruleStatemachineActionPeripheralDestroyWindow returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='destroyWindow' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDestroyWindowKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDeviceBrightness
+entryRuleStatemachineActionPeripheralDeviceBrightness returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule()); }
+	 iv_ruleStatemachineActionPeripheralDeviceBrightness=ruleStatemachineActionPeripheralDeviceBrightness 
+	 { $current=$iv_ruleStatemachineActionPeripheralDeviceBrightness.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDeviceBrightness
+ruleStatemachineActionPeripheralDeviceBrightness returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='deviceBrightness' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceBrightnessKeyword_0());
+    }
+(
+(
+		lv_brightness_1_0=RULE_INT
+		{
+			newLeafNode(lv_brightness_1_0, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getBrightnessINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"brightness",
+        		lv_brightness_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayBitmap
+entryRuleStatemachineActionPeripheralDisplayBitmap returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule()); }
+	 iv_ruleStatemachineActionPeripheralDisplayBitmap=ruleStatemachineActionPeripheralDisplayBitmap 
+	 { $current=$iv_ruleStatemachineActionPeripheralDisplayBitmap.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayBitmap
+ruleStatemachineActionPeripheralDisplayBitmap returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='displayBitmap' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDisplayBitmapKeyword_0());
+    }
+	otherlv_1='id' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getIdKeyword_1());
+    }
+(
+(
+		lv_bitmapId_2_0=RULE_INT
+		{
+			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"bitmapId",
+        		lv_bitmapId_2_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayText
+entryRuleStatemachineActionPeripheralDisplayText returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextRule()); }
+	 iv_ruleStatemachineActionPeripheralDisplayText=ruleStatemachineActionPeripheralDisplayText 
+	 { $current=$iv_ruleStatemachineActionPeripheralDisplayText.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayText
+ruleStatemachineActionPeripheralDisplayText returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='displayText' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getDisplayTextKeyword_0());
+    }
+	otherlv_1='text' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_text_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_hasType_3_0=	'type' 
+    {
+        newLeafNode(lv_hasType_3_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getHasTypeTypeKeyword_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+	        }
+       		setWithLastConsumed($current, "hasType", true, "type");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_3_1_0()); 
+	    }
+		lv_textType_4_0=ruleStatemachineLineDisplayTextType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+	        }
+       		set(
+       			$current, 
+       			"textType",
+        		lv_textType_4_0, 
+        		"StatemachineLineDisplayTextType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getCommercialAtKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralDisplayTextAt
+entryRuleStatemachineActionPeripheralDisplayTextAt returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule()); }
+	 iv_ruleStatemachineActionPeripheralDisplayTextAt=ruleStatemachineActionPeripheralDisplayTextAt 
+	 { $current=$iv_ruleStatemachineActionPeripheralDisplayTextAt.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralDisplayTextAt
+ruleStatemachineActionPeripheralDisplayTextAt returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='displayTextAt' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getDisplayTextAtKeyword_0());
+    }
+	otherlv_1='text' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_text_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='row' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getRowKeyword_3());
+    }
+(
+(
+		lv_row_4_0=RULE_INT
+		{
+			newLeafNode(lv_row_4_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getRowINTTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"row",
+        		lv_row_4_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_5='column' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getColumnKeyword_5());
+    }
+(
+(
+		lv_column_6_0=RULE_INT
+		{
+			newLeafNode(lv_column_6_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getColumnINTTerminalRuleCall_6_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"column",
+        		lv_column_6_0, 
+        		"INT");
+	    }
+
+)
+)((
+(
+		lv_hasType_7_0=	'type' 
+    {
+        newLeafNode(lv_hasType_7_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getHasTypeTypeKeyword_7_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+       		setWithLastConsumed($current, "hasType", true, "type");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_7_1_0()); 
+	    }
+		lv_textType_8_0=ruleStatemachineLineDisplayTextType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+       		set(
+       			$current, 
+       			"textType",
+        		lv_textType_8_0, 
+        		"StatemachineLineDisplayTextType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_9='@' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getCommercialAtKeyword_8());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+	        }
+        }
+	otherlv_10=RULE_ID
+	{
+		newLeafNode(otherlv_10, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralInterCharacterWait
+entryRuleStatemachineActionPeripheralInterCharacterWait returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule()); }
+	 iv_ruleStatemachineActionPeripheralInterCharacterWait=ruleStatemachineActionPeripheralInterCharacterWait 
+	 { $current=$iv_ruleStatemachineActionPeripheralInterCharacterWait.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralInterCharacterWait
+ruleStatemachineActionPeripheralInterCharacterWait returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='interCharacterWait' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getInterCharacterWaitKeyword_0());
+    }
+(
+(
+		lv_wait_1_0=RULE_INT
+		{
+			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"wait",
+        		lv_wait_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeFormat
+entryRuleStatemachineActionPeripheralMarqueeFormat returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule()); }
+	 iv_ruleStatemachineActionPeripheralMarqueeFormat=ruleStatemachineActionPeripheralMarqueeFormat 
+	 { $current=$iv_ruleStatemachineActionPeripheralMarqueeFormat.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeFormat
+ruleStatemachineActionPeripheralMarqueeFormat returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='marqueeFormat' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getMarqueeFormatKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0()); 
+	    }
+		lv_format_1_0=ruleStatemachineLineDisplayMarqueeFormat		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule());
+	        }
+       		set(
+       			$current, 
+       			"format",
+        		lv_format_1_0, 
+        		"StatemachineLineDisplayMarqueeFormat");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeRepeatWait
+entryRuleStatemachineActionPeripheralMarqueeRepeatWait returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule()); }
+	 iv_ruleStatemachineActionPeripheralMarqueeRepeatWait=ruleStatemachineActionPeripheralMarqueeRepeatWait 
+	 { $current=$iv_ruleStatemachineActionPeripheralMarqueeRepeatWait.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeRepeatWait
+ruleStatemachineActionPeripheralMarqueeRepeatWait returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='marqueeRepeatWait' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getMarqueeRepeatWaitKeyword_0());
+    }
+(
+(
+		lv_wait_1_0=RULE_INT
+		{
+			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"wait",
+        		lv_wait_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeType
+entryRuleStatemachineActionPeripheralMarqueeType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule()); }
+	 iv_ruleStatemachineActionPeripheralMarqueeType=ruleStatemachineActionPeripheralMarqueeType 
+	 { $current=$iv_ruleStatemachineActionPeripheralMarqueeType.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeType
+ruleStatemachineActionPeripheralMarqueeType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='marqueeType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0()); 
+	    }
+		lv_marqueeType_1_0=ruleStatemachineLineDisplayMarqueeType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"marqueeType",
+        		lv_marqueeType_1_0, 
+        		"StatemachineLineDisplayMarqueeType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralMarqueeUnitWait
+entryRuleStatemachineActionPeripheralMarqueeUnitWait returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule()); }
+	 iv_ruleStatemachineActionPeripheralMarqueeUnitWait=ruleStatemachineActionPeripheralMarqueeUnitWait 
+	 { $current=$iv_ruleStatemachineActionPeripheralMarqueeUnitWait.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralMarqueeUnitWait
+ruleStatemachineActionPeripheralMarqueeUnitWait returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='marqueeUnitWait' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getMarqueeUnitWaitKeyword_0());
+    }
+(
+(
+		lv_wait_1_0=RULE_INT
+		{
+			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"wait",
+        		lv_wait_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralScroll
+entryRuleStatemachineActionPeripheralScroll returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralScrollRule()); }
+	 iv_ruleStatemachineActionPeripheralScroll=ruleStatemachineActionPeripheralScroll 
+	 { $current=$iv_ruleStatemachineActionPeripheralScroll.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralScroll
+ruleStatemachineActionPeripheralScroll returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='scroll' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralScrollAccess().getScrollKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0()); 
+	    }
+		lv_direction_1_0=ruleStatemachineLineDisplayScrollTextType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralScrollRule());
+	        }
+       		set(
+       			$current, 
+       			"direction",
+        		lv_direction_1_0, 
+        		"StatemachineLineDisplayScrollTextType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_units_2_0=RULE_INT
+		{
+			newLeafNode(lv_units_2_0, grammarAccess.getStatemachineActionPeripheralScrollAccess().getUnitsINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralScrollRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"units",
+        		lv_units_2_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralScrollAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralScrollRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralScrollAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralOpenDrawer
+entryRuleStatemachineActionPeripheralOpenDrawer returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule()); }
+	 iv_ruleStatemachineActionPeripheralOpenDrawer=ruleStatemachineActionPeripheralOpenDrawer 
+	 { $current=$iv_ruleStatemachineActionPeripheralOpenDrawer.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralOpenDrawer
+ruleStatemachineActionPeripheralOpenDrawer returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='openDrawer' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getOpenDrawerKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintBarcode
+entryRuleStatemachineActionPeripheralPrintBarcode returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintBarcode=ruleStatemachineActionPeripheralPrintBarcode 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintBarcode.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintBarcode
+ruleStatemachineActionPeripheralPrintBarcode returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='printBarcode' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getPrintBarcodeKeyword_0());
+    }
+	otherlv_1='data' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataKeyword_1());
+    }
+(
+(
+		lv_data_2_0=RULE_STRING
+		{
+			newLeafNode(lv_data_2_0, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataSTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"data",
+        		lv_data_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='barcodeType' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0()); 
+	    }
+		lv_barcodeType_4_0=ruleStatemachinePOSPrinterBarcodeType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+	        }
+       		set(
+       			$current, 
+       			"barcodeType",
+        		lv_barcodeType_4_0, 
+        		"StatemachinePOSPrinterBarcodeType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getCommercialAtKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintBitmap
+entryRuleStatemachineActionPeripheralPrintBitmap returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintBitmap=ruleStatemachineActionPeripheralPrintBitmap 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintBitmap.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintBitmap
+ruleStatemachineActionPeripheralPrintBitmap returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='printBitmap' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getPrintBitmapKeyword_0());
+    }
+	otherlv_1='id' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getIdKeyword_1());
+    }
+(
+(
+		lv_bitmapId_2_0=RULE_INT
+		{
+			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"bitmapId",
+        		lv_bitmapId_2_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintCut
+entryRuleStatemachineActionPeripheralPrintCut returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintCutRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintCut=ruleStatemachineActionPeripheralPrintCut 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintCut.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintCut
+ruleStatemachineActionPeripheralPrintCut returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='printCut' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getPrintCutKeyword_0());
+    }
+	otherlv_1='text' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_text_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintCutRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintCutRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintNormal
+entryRuleStatemachineActionPeripheralPrintNormal returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintNormalRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintNormal=ruleStatemachineActionPeripheralPrintNormal 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintNormal.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintNormal
+ruleStatemachineActionPeripheralPrintNormal returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='printNormal' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getPrintNormalKeyword_0());
+    }
+	otherlv_1='text' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getTextKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_text_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintNormalRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintNormalRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintRegisterBitmap
+entryRuleStatemachineActionPeripheralPrintRegisterBitmap returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintRegisterBitmap=ruleStatemachineActionPeripheralPrintRegisterBitmap 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintRegisterBitmap.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintRegisterBitmap
+ruleStatemachineActionPeripheralPrintRegisterBitmap returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='registerBitmap' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getRegisterBitmapKeyword_0());
+    }
+	otherlv_1='id' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getIdKeyword_1());
+    }
+(
+(
+		lv_bitmapId_2_0=RULE_INT
+		{
+			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"bitmapId",
+        		lv_bitmapId_2_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameKeyword_3());
+    }
+(
+(
+		lv_name_4_0=RULE_STRING
+		{
+			newLeafNode(lv_name_4_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameSTRINGTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getCommercialAtKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTOpen
+entryRuleStatemachineActionPeripheralPTOpen returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenRule()); }
+	 iv_ruleStatemachineActionPeripheralPTOpen=ruleStatemachineActionPeripheralPTOpen 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTOpen.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTOpen
+ruleStatemachineActionPeripheralPTOpen returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentOpen' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPaymentOpenKeyword_0());
+    }
+	otherlv_1='host' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_host_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+	        }
+       		set(
+       			$current, 
+       			"host",
+        		lv_host_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='port' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortStatemachineActionFieldConcatenationParserRuleCall_4_0()); 
+	    }
+		lv_port_4_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+	        }
+       		set(
+       			$current, 
+       			"port",
+        		lv_port_4_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getCommercialAtKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTClose
+entryRuleStatemachineActionPeripheralPTClose returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTCloseRule()); }
+	 iv_ruleStatemachineActionPeripheralPTClose=ruleStatemachineActionPeripheralPTClose 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTClose.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTClose
+ruleStatemachineActionPeripheralPTClose returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentClose' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getPaymentCloseKeyword_0());
+    }
+	otherlv_1='@' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getCommercialAtKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTCloseRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTAcknowledge
+entryRuleStatemachineActionPeripheralPTAcknowledge returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule()); }
+	 iv_ruleStatemachineActionPeripheralPTAcknowledge=ruleStatemachineActionPeripheralPTAcknowledge 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTAcknowledge.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTAcknowledge
+ruleStatemachineActionPeripheralPTAcknowledge returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentAcknowledge' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getPaymentAcknowledgeKeyword_0());
+    }
+	otherlv_1='@' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getCommercialAtKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTReversal
+entryRuleStatemachineActionPeripheralPTReversal returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalRule()); }
+	 iv_ruleStatemachineActionPeripheralPTReversal=ruleStatemachineActionPeripheralPTReversal 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTReversal.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTReversal
+ruleStatemachineActionPeripheralPTReversal returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentReversal' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPaymentReversalKeyword_0());
+    }
+	otherlv_1='withPassword' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getWithPasswordKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_password_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+	        }
+       		set(
+       			$current, 
+       			"password",
+        		lv_password_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='ofReceipt' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getOfReceiptKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0()); 
+	    }
+		lv_receipt_4_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+	        }
+       		set(
+       			$current, 
+       			"receipt",
+        		lv_receipt_4_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getCommercialAtKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTRegistration
+entryRuleStatemachineActionPeripheralPTRegistration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule()); }
+	 iv_ruleStatemachineActionPeripheralPTRegistration=ruleStatemachineActionPeripheralPTRegistration 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTRegistration.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTRegistration
+ruleStatemachineActionPeripheralPTRegistration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentRegistration' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPaymentRegistrationKeyword_0());
+    }
+	otherlv_1='withPassword' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getWithPasswordKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_password_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+	        }
+       		set(
+       			$current, 
+       			"password",
+        		lv_password_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='configuration' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationKeyword_3());
+    }
+(
+(
+		lv_configuration_4_0=RULE_STRING
+		{
+			newLeafNode(lv_configuration_4_0, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationSTRINGTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"configuration",
+        		lv_configuration_4_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_5='@' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getCommercialAtKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTAuthorization
+entryRuleStatemachineActionPeripheralPTAuthorization returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule()); }
+	 iv_ruleStatemachineActionPeripheralPTAuthorization=ruleStatemachineActionPeripheralPTAuthorization 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTAuthorization.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTAuthorization
+ruleStatemachineActionPeripheralPTAuthorization returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentAuthorization' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getPaymentAuthorizationKeyword_0());
+    }
+	otherlv_1='ofAmount' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getOfAmountKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getAmountStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_amount_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule());
+	        }
+       		set(
+       			$current, 
+       			"amount",
+        		lv_amount_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='@' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getCommercialAtKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_4_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPTResponse
+entryRuleStatemachineActionPeripheralPTResponse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTResponseRule()); }
+	 iv_ruleStatemachineActionPeripheralPTResponse=ruleStatemachineActionPeripheralPTResponse 
+	 { $current=$iv_ruleStatemachineActionPeripheralPTResponse.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPTResponse
+ruleStatemachineActionPeripheralPTResponse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='paymentResponse' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getPaymentResponseKeyword_0());
+    }
+	otherlv_1='from' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getFromKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTResponseRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionPeripheralPrintReport
+entryRuleStatemachineActionPeripheralPrintReport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintReportRule()); }
+	 iv_ruleStatemachineActionPeripheralPrintReport=ruleStatemachineActionPeripheralPrintReport 
+	 { $current=$iv_ruleStatemachineActionPeripheralPrintReport.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionPeripheralPrintReport
+ruleStatemachineActionPeripheralPrintReport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='printReport' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getPrintReportKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getReportReportCrossReference_1_0()); 
+	}
+
+)
+)((
+(
+		lv_hasFilter_2_0=	'from' 
+    {
+        newLeafNode(lv_hasFilter_2_0, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getHasFilterFromKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+	        }
+       		setWithLastConsumed($current, "hasFilter", true, "from");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getKeyStatemachineStorageCrossReference_2_1_0()); 
+	}
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSource
+entryRuleStatemachineActionFieldSource returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceRule()); }
+	 iv_ruleStatemachineActionFieldSource=ruleStatemachineActionFieldSource 
+	 { $current=$iv_ruleStatemachineActionFieldSource.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSource
+ruleStatemachineActionFieldSource returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceStringParserRuleCall_0()); 
+    }
+    this_StatemachineActionFieldSourceString_0=ruleStatemachineActionFieldSourceString
+    { 
+        $current = $this_StatemachineActionFieldSourceString_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceNumberParserRuleCall_1()); 
+    }
+    this_StatemachineActionFieldSourceNumber_1=ruleStatemachineActionFieldSourceNumber
+    { 
+        $current = $this_StatemachineActionFieldSourceNumber_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEvaluateParserRuleCall_2()); 
+    }
+    this_StatemachineActionFieldSourceEvaluate_2=ruleStatemachineActionFieldSourceEvaluate
+    { 
+        $current = $this_StatemachineActionFieldSourceEvaluate_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceTranslateParserRuleCall_3()); 
+    }
+    this_StatemachineActionFieldSourceTranslate_3=ruleStatemachineActionFieldSourceTranslate
+    { 
+        $current = $this_StatemachineActionFieldSourceTranslate_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldGetParserRuleCall_4()); 
+    }
+    this_StatemachineActionFieldGet_4=ruleStatemachineActionFieldGet
+    { 
+        $current = $this_StatemachineActionFieldGet_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineFunctionParserRuleCall_5()); 
+    }
+    this_StatemachineFunction_5=ruleStatemachineFunction
+    { 
+        $current = $this_StatemachineFunction_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineStorageRetrieveParserRuleCall_6()); 
+    }
+    this_StatemachineStorageRetrieve_6=ruleStatemachineStorageRetrieve
+    { 
+        $current = $this_StatemachineStorageRetrieve_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceDtoAttributeParserRuleCall_7()); 
+    }
+    this_StatemachineActionFieldSourceDtoAttribute_7=ruleStatemachineActionFieldSourceDtoAttribute
+    { 
+        $current = $this_StatemachineActionFieldSourceDtoAttribute_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEventParserRuleCall_8()); 
+    }
+    this_StatemachineActionFieldSourceEvent_8=ruleStatemachineActionFieldSourceEvent
+    { 
+        $current = $this_StatemachineActionFieldSourceEvent_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionPeripheralPTResponseParserRuleCall_9()); 
+    }
+    this_StatemachineActionPeripheralPTResponse_9=ruleStatemachineActionPeripheralPTResponse
+    { 
+        $current = $this_StatemachineActionPeripheralPTResponse_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineOperation
+entryRuleStatemachineOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineOperationRule()); }
+	 iv_ruleStatemachineOperation=ruleStatemachineOperation 
+	 { $current=$iv_ruleStatemachineOperation.current; } 
+	 EOF 
+;
+
+// Rule StatemachineOperation
+ruleStatemachineOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='operation' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineOperationAccess().getOperationKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineOperationRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineOperationAccess().getOperationFunctionLibraryOperationCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineOperationAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineOperationAccess().getFirstStatemachineOperationParameterParserRuleCall_3_0()); 
+	    }
+		lv_first_3_0=ruleStatemachineOperationParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"first",
+        		lv_first_3_0, 
+        		"StatemachineOperationParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineOperationAccess().getMoreStatemachineOperationParameterMoreParserRuleCall_4_0()); 
+	    }
+		lv_more_4_0=ruleStatemachineOperationParameterMore		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"more",
+        		lv_more_4_0, 
+        		"StatemachineOperationParameterMore");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineOperationAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineGuard
+entryRuleStatemachineGuard returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineGuardRule()); }
+	 iv_ruleStatemachineGuard=ruleStatemachineGuard 
+	 { $current=$iv_ruleStatemachineGuard.current; } 
+	 EOF 
+;
+
+// Rule StatemachineGuard
+ruleStatemachineGuard returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='guard' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineGuardAccess().getGuardKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineGuardRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineGuardAccess().getGuardFunctionLibraryGuardCrossReference_1_0()); 
+	}
+
+)
+)((
+(
+		lv_hasOnFail_2_0=	'onFail' 
+    {
+        newLeafNode(lv_hasOnFail_2_0, grammarAccess.getStatemachineGuardAccess().getHasOnFailOnFailKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineGuardRule());
+	        }
+       		setWithLastConsumed($current, "hasOnFail", true, "onFail");
+	    }
+
+)
+)	otherlv_3='caption' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineGuardAccess().getCaptionKeyword_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailCaptionTRANSLATABLESTRINGParserRuleCall_2_2_0()); 
+	    }
+		lv_onFailCaption_4_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+	        }
+       		set(
+       			$current, 
+       			"onFailCaption",
+        		lv_onFailCaption_4_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='description' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineGuardAccess().getDescriptionKeyword_2_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailDescriptionTRANSLATABLESTRINGParserRuleCall_2_4_0()); 
+	    }
+		lv_onFailDescription_6_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+	        }
+       		set(
+       			$current, 
+       			"onFailDescription",
+        		lv_onFailDescription_6_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='type' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStatemachineGuardAccess().getTypeKeyword_2_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailTypeStatemachineUserMessageTypeEnumRuleCall_2_6_0()); 
+	    }
+		lv_onFailType_8_0=ruleStatemachineUserMessageType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+	        }
+       		set(
+       			$current, 
+       			"onFailType",
+        		lv_onFailType_8_0, 
+        		"StatemachineUserMessageType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineFunction
+entryRuleStatemachineFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineFunctionRule()); }
+	 iv_ruleStatemachineFunction=ruleStatemachineFunction 
+	 { $current=$iv_ruleStatemachineFunction.current; } 
+	 EOF 
+;
+
+// Rule StatemachineFunction
+ruleStatemachineFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='function' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineFunctionAccess().getFunctionKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineFunctionRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineFunctionAccess().getFunctionFunctionLibraryFunctionCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineFunctionAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineFunctionAccess().getFirstStatemachineOperationParameterParserRuleCall_3_0()); 
+	    }
+		lv_first_3_0=ruleStatemachineOperationParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"first",
+        		lv_first_3_0, 
+        		"StatemachineOperationParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineFunctionAccess().getMoreStatemachineOperationParameterMoreParserRuleCall_4_0()); 
+	    }
+		lv_more_4_0=ruleStatemachineOperationParameterMore		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"more",
+        		lv_more_4_0, 
+        		"StatemachineOperationParameterMore");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineFunctionAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineStorage
+entryRuleStatemachineStorage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineStorageRule()); }
+	 iv_ruleStatemachineStorage=ruleStatemachineStorage 
+	 { $current=$iv_ruleStatemachineStorage.current; } 
+	 EOF 
+;
+
+// Rule StatemachineStorage
+ruleStatemachineStorage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='store' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineStorageAccess().getStoreKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineStorageAccess().getContentStatemachineActionFieldConcatenationParserRuleCall_1_0()); 
+	    }
+		lv_content_1_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineStorageRule());
+	        }
+       		set(
+       			$current, 
+       			"content",
+        		lv_content_1_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='with' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineStorageAccess().getWithKeyword_2());
+    }
+(
+(
+		lv_key_3_0=RULE_ID
+		{
+			newLeafNode(lv_key_3_0, grammarAccess.getStatemachineStorageAccess().getKeyIDTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_3_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_4='.' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineStorageAccess().getFullStopKeyword_4());
+    }
+(
+(
+		lv_attribute_5_0=RULE_ID
+		{
+			newLeafNode(lv_attribute_5_0, grammarAccess.getStatemachineStorageAccess().getAttributeIDTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"attribute",
+        		lv_attribute_5_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineStorageRetrieve
+entryRuleStatemachineStorageRetrieve returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineStorageRetrieveRule()); }
+	 iv_ruleStatemachineStorageRetrieve=ruleStatemachineStorageRetrieve 
+	 { $current=$iv_ruleStatemachineStorageRetrieve.current; } 
+	 EOF 
+;
+
+// Rule StatemachineStorageRetrieve
+ruleStatemachineStorageRetrieve returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='retrieve' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineStorageRetrieveAccess().getRetrieveKeyword_0());
+    }
+	otherlv_1='from' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineStorageRetrieveAccess().getFromKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_ID
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getStatemachineStorageRetrieveAccess().getKeyIDTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRetrieveRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_3='.' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineStorageRetrieveAccess().getFullStopKeyword_3());
+    }
+(
+(
+		lv_attribute_4_0=RULE_ID
+		{
+			newLeafNode(lv_attribute_4_0, grammarAccess.getStatemachineStorageRetrieveAccess().getAttributeIDTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRetrieveRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"attribute",
+        		lv_attribute_4_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionConditionalTransition
+entryRuleStatemachineActionConditionalTransition returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionConditionalTransitionRule()); }
+	 iv_ruleStatemachineActionConditionalTransition=ruleStatemachineActionConditionalTransition 
+	 { $current=$iv_ruleStatemachineActionConditionalTransition.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionConditionalTransition
+ruleStatemachineActionConditionalTransition returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='transition' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionConditionalTransitionAccess().getTransitionKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionConditionalTransitionRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionConditionalTransitionAccess().getTransitionStatemachineStateCrossReference_1_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionConditionalTransitionAccess().getGuardStatemachineGuardParserRuleCall_2_0()); 
+	    }
+		lv_guard_2_0=ruleStatemachineGuard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionConditionalTransitionRule());
+	        }
+       		set(
+       			$current, 
+       			"guard",
+        		lv_guard_2_0, 
+        		"StatemachineGuard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionConditionalTransitionAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionConditionalTransitionAccess().getActionsStatemachineActionParserRuleCall_4_0()); 
+	    }
+		lv_actions_4_0=ruleStatemachineAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionConditionalTransitionRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_4_0, 
+        		"StatemachineAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionConditionalTransitionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceString
+entryRuleStatemachineActionFieldSourceString returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceStringRule()); }
+	 iv_ruleStatemachineActionFieldSourceString=ruleStatemachineActionFieldSourceString 
+	 { $current=$iv_ruleStatemachineActionFieldSourceString.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceString
+ruleStatemachineActionFieldSourceString returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		lv_text_0_0=RULE_STRING
+		{
+			newLeafNode(lv_text_0_0, grammarAccess.getStatemachineActionFieldSourceStringAccess().getTextSTRINGTerminalRuleCall_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceStringRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_0, 
+        		"STRING");
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceNumber
+entryRuleStatemachineActionFieldSourceNumber returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceNumberRule()); }
+	 iv_ruleStatemachineActionFieldSourceNumber=ruleStatemachineActionFieldSourceNumber 
+	 { $current=$iv_ruleStatemachineActionFieldSourceNumber.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceNumber
+ruleStatemachineActionFieldSourceNumber returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceNumberAccess().getValueSignedNumberParserRuleCall_0()); 
+	    }
+		lv_value_0_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceNumberRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_0_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvaluate
+entryRuleStatemachineActionFieldSourceEvaluate returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceEvaluateRule()); }
+	 iv_ruleStatemachineActionFieldSourceEvaluate=ruleStatemachineActionFieldSourceEvaluate 
+	 { $current=$iv_ruleStatemachineActionFieldSourceEvaluate.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvaluate
+ruleStatemachineActionFieldSourceEvaluate returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceEvaluateAccess().getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_0()); 
+	    }
+		lv_evaluationtype_0_0=ruleStatemachineEvaluationType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceEvaluateRule());
+	        }
+       		set(
+       			$current, 
+       			"evaluationtype",
+        		lv_evaluationtype_0_0, 
+        		"StatemachineEvaluationType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvent
+entryRuleStatemachineActionFieldSourceEvent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceEventRule()); }
+	 iv_ruleStatemachineActionFieldSourceEvent=ruleStatemachineActionFieldSourceEvent 
+	 { $current=$iv_ruleStatemachineActionFieldSourceEvent.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvent
+ruleStatemachineActionFieldSourceEvent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceEventAccess().getStatemachineActionFieldSourceEventAction_0(),
+            $current);
+    }
+)	otherlv_1='event' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceEventAccess().getEventKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceTranslate
+entryRuleStatemachineActionFieldSourceTranslate returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceTranslateRule()); }
+	 iv_ruleStatemachineActionFieldSourceTranslate=ruleStatemachineActionFieldSourceTranslate 
+	 { $current=$iv_ruleStatemachineActionFieldSourceTranslate.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceTranslate
+ruleStatemachineActionFieldSourceTranslate returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='translate' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getTranslateKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getTextTRANSLATABLESTRINGParserRuleCall_1_0()); 
+	    }
+		lv_text_1_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceTranslateRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_1_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceDtoAttribute
+entryRuleStatemachineActionFieldSourceDtoAttribute returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule()); }
+	 iv_ruleStatemachineActionFieldSourceDtoAttribute=ruleStatemachineActionFieldSourceDtoAttribute 
+	 { $current=$iv_ruleStatemachineActionFieldSourceDtoAttribute.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceDtoAttribute
+ruleStatemachineActionFieldSourceDtoAttribute returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='dto' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getDtoKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getDtoStatemachineControlDTOAttributeCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='.' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getFullStopKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getAttributeLDtoInheritedAttributeCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceMore
+entryRuleStatemachineActionFieldSourceMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceMore=ruleStatemachineActionFieldSourceMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceMore
+ruleStatemachineActionFieldSourceMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceStringMoreParserRuleCall_0()); 
+    }
+    this_StatemachineActionFieldSourceStringMore_0=ruleStatemachineActionFieldSourceStringMore
+    { 
+        $current = $this_StatemachineActionFieldSourceStringMore_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceNumberMoreParserRuleCall_1()); 
+    }
+    this_StatemachineActionFieldSourceNumberMore_1=ruleStatemachineActionFieldSourceNumberMore
+    { 
+        $current = $this_StatemachineActionFieldSourceNumberMore_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2()); 
+    }
+    this_StatemachineActionFieldSourceEvaluateMore_2=ruleStatemachineActionFieldSourceEvaluateMore
+    { 
+        $current = $this_StatemachineActionFieldSourceEvaluateMore_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceTranslateMoreParserRuleCall_3()); 
+    }
+    this_StatemachineActionFieldSourceTranslateMore_3=ruleStatemachineActionFieldSourceTranslateMore
+    { 
+        $current = $this_StatemachineActionFieldSourceTranslateMore_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldGetMoreParserRuleCall_4()); 
+    }
+    this_StatemachineActionFieldGetMore_4=ruleStatemachineActionFieldGetMore
+    { 
+        $current = $this_StatemachineActionFieldGetMore_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineOperationMoreParserRuleCall_5()); 
+    }
+    this_StatemachineOperationMore_5=ruleStatemachineOperationMore
+    { 
+        $current = $this_StatemachineOperationMore_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineStorageRetrieveMoreParserRuleCall_6()); 
+    }
+    this_StatemachineStorageRetrieveMore_6=ruleStatemachineStorageRetrieveMore
+    { 
+        $current = $this_StatemachineStorageRetrieveMore_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceMoreAccess().getStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7()); 
+    }
+    this_StatemachineActionFieldSourceDtoAttributeMore_7=ruleStatemachineActionFieldSourceDtoAttributeMore
+    { 
+        $current = $this_StatemachineActionFieldSourceDtoAttributeMore_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceStringMore
+entryRuleStatemachineActionFieldSourceStringMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceStringMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceStringMore=ruleStatemachineActionFieldSourceStringMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceStringMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceStringMore
+ruleStatemachineActionFieldSourceStringMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getStatemachineActionFieldSourceStringAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getPlusSignKeyword_1());
+    }
+(
+(
+		lv_text_2_0=RULE_STRING
+		{
+			newLeafNode(lv_text_2_0, grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getTextSTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceStringMoreRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_2_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceNumberMore
+entryRuleStatemachineActionFieldSourceNumberMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceNumberMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceNumberMore=ruleStatemachineActionFieldSourceNumberMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceNumberMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceNumberMore
+ruleStatemachineActionFieldSourceNumberMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getStatemachineActionFieldSourceNumberAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getPlusSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getValueSignedNumberParserRuleCall_2_0()); 
+	    }
+		lv_value_2_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceNumberMoreRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceEvaluateMore
+entryRuleStatemachineActionFieldSourceEvaluateMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceEvaluateMore=ruleStatemachineActionFieldSourceEvaluateMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceEvaluateMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceEvaluateMore
+ruleStatemachineActionFieldSourceEvaluateMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getStatemachineActionFieldSourceEvaluateAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getPlusSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_2_0()); 
+	    }
+		lv_evaluationtype_2_0=ruleStatemachineEvaluationType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreRule());
+	        }
+       		set(
+       			$current, 
+       			"evaluationtype",
+        		lv_evaluationtype_2_0, 
+        		"StatemachineEvaluationType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceTranslateMore
+entryRuleStatemachineActionFieldSourceTranslateMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceTranslateMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceTranslateMore=ruleStatemachineActionFieldSourceTranslateMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceTranslateMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceTranslateMore
+ruleStatemachineActionFieldSourceTranslateMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getStatemachineActionFieldSourceTranslateAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getPlusSignKeyword_1());
+    }
+	otherlv_2='translate' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getTranslateKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getTextTRANSLATABLESTRINGParserRuleCall_3_0()); 
+	    }
+		lv_text_3_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSourceTranslateMoreRule());
+	        }
+       		set(
+       			$current, 
+       			"text",
+        		lv_text_3_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldGetMore
+entryRuleStatemachineActionFieldGetMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldGetMoreRule()); }
+	 iv_ruleStatemachineActionFieldGetMore=ruleStatemachineActionFieldGetMore 
+	 { $current=$iv_ruleStatemachineActionFieldGetMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldGetMore
+ruleStatemachineActionFieldGetMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldGetMoreAccess().getStatemachineActionFieldGetAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldGetMoreAccess().getPlusSignKeyword_1());
+    }
+	otherlv_2='get' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionFieldGetMoreAccess().getGetKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldGetMoreRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionFieldGetMoreAccess().getAttributeStatemachineControlFieldAttributeCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineOperationMore
+entryRuleStatemachineOperationMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineOperationMoreRule()); }
+	 iv_ruleStatemachineOperationMore=ruleStatemachineOperationMore 
+	 { $current=$iv_ruleStatemachineOperationMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineOperationMore
+ruleStatemachineOperationMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineOperationMoreAccess().getStatemachineOperationAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineOperationMoreAccess().getPlusSignKeyword_1());
+    }
+	otherlv_2='operation' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineOperationMoreAccess().getOperationKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineOperationMoreRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineOperationMoreAccess().getOperationFunctionLibraryOperationCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineStorageRetrieveMore
+entryRuleStatemachineStorageRetrieveMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineStorageRetrieveMoreRule()); }
+	 iv_ruleStatemachineStorageRetrieveMore=ruleStatemachineStorageRetrieveMore 
+	 { $current=$iv_ruleStatemachineStorageRetrieveMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineStorageRetrieveMore
+ruleStatemachineStorageRetrieveMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineStorageRetrieveMoreAccess().getStatemachineStorageRetrieveAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getPlusSignKeyword_1());
+    }
+	otherlv_2='retrieve' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getRetrieveKeyword_2());
+    }
+	otherlv_3='from' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getFromKeyword_3());
+    }
+(
+(
+		lv_key_4_0=RULE_ID
+		{
+			newLeafNode(lv_key_4_0, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getKeyIDTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRetrieveMoreRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_4_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_5='.' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getFullStopKeyword_5());
+    }
+(
+(
+		lv_attribute_6_0=RULE_ID
+		{
+			newLeafNode(lv_attribute_6_0, grammarAccess.getStatemachineStorageRetrieveMoreAccess().getAttributeIDTerminalRuleCall_6_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineStorageRetrieveMoreRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"attribute",
+        		lv_attribute_6_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSourceDtoAttributeMore
+entryRuleStatemachineActionFieldSourceDtoAttributeMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule()); }
+	 iv_ruleStatemachineActionFieldSourceDtoAttributeMore=ruleStatemachineActionFieldSourceDtoAttributeMore 
+	 { $current=$iv_ruleStatemachineActionFieldSourceDtoAttributeMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSourceDtoAttributeMore
+ruleStatemachineActionFieldSourceDtoAttributeMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getStatemachineActionFieldSourceDtoAttributeAction_0(),
+            $current);
+    }
+)	otherlv_1='+' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getPlusSignKeyword_1());
+    }
+	otherlv_2='dto' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getDtoKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getDtoStatemachineControlDTOAttributeCrossReference_3_0()); 
+	}
+
+)
+)	otherlv_4='.' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getFullStopKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getAttributeLDtoInheritedAttributeCrossReference_5_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldConcatenation
+entryRuleStatemachineActionFieldConcatenation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldConcatenationRule()); }
+	 iv_ruleStatemachineActionFieldConcatenation=ruleStatemachineActionFieldConcatenation 
+	 { $current=$iv_ruleStatemachineActionFieldConcatenation.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldConcatenation
+ruleStatemachineActionFieldConcatenation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldConcatenationAccess().getFirstStatemachineActionFieldSourceParserRuleCall_0_0()); 
+	    }
+		lv_first_0_0=ruleStatemachineActionFieldSource		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldConcatenationRule());
+	        }
+       		set(
+       			$current, 
+       			"first",
+        		lv_first_0_0, 
+        		"StatemachineActionFieldSource");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldConcatenationAccess().getMoreStatemachineActionFieldSourceMoreParserRuleCall_1_0()); 
+	    }
+		lv_more_1_0=ruleStatemachineActionFieldSourceMore		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldConcatenationRule());
+	        }
+       		add(
+       			$current, 
+       			"more",
+        		lv_more_1_0, 
+        		"StatemachineActionFieldSourceMore");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineOperationParameter
+entryRuleStatemachineOperationParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineOperationParameterRule()); }
+	 iv_ruleStatemachineOperationParameter=ruleStatemachineOperationParameter 
+	 { $current=$iv_ruleStatemachineOperationParameter.current; } 
+	 EOF 
+;
+
+// Rule StatemachineOperationParameter
+ruleStatemachineOperationParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineOperationParameterAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_0()); 
+	    }
+		lv_source_0_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineOperationParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"source",
+        		lv_source_0_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineOperationParameterMore
+entryRuleStatemachineOperationParameterMore returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineOperationParameterMoreRule()); }
+	 iv_ruleStatemachineOperationParameterMore=ruleStatemachineOperationParameterMore 
+	 { $current=$iv_ruleStatemachineOperationParameterMore.current; } 
+	 EOF 
+;
+
+// Rule StatemachineOperationParameterMore
+ruleStatemachineOperationParameterMore returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineOperationParameterMoreAccess().getStatemachineOperationParameterAction_0(),
+            $current);
+    }
+)	otherlv_1=',' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineOperationParameterMoreAccess().getCommaKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineOperationParameterMoreAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+	    }
+		lv_source_2_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineOperationParameterMoreRule());
+	        }
+       		set(
+       			$current, 
+       			"source",
+        		lv_source_2_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldSet
+entryRuleStatemachineActionFieldSet returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldSetRule()); }
+	 iv_ruleStatemachineActionFieldSet=ruleStatemachineActionFieldSet 
+	 { $current=$iv_ruleStatemachineActionFieldSet.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldSet
+ruleStatemachineActionFieldSet returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='set' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldSetAccess().getSetKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionFieldSetAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_1_0()); 
+	    }
+		lv_source_1_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionFieldSetRule());
+	        }
+       		set(
+       			$current, 
+       			"source",
+        		lv_source_1_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionFieldSetAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldSetRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionFieldSetAccess().getAttributeStatemachineControlFieldAttributeCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldClear
+entryRuleStatemachineActionFieldClear returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldClearRule()); }
+	 iv_ruleStatemachineActionFieldClear=ruleStatemachineActionFieldClear 
+	 { $current=$iv_ruleStatemachineActionFieldClear.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldClear
+ruleStatemachineActionFieldClear returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='clear' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldClearAccess().getClearKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldClearRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldClearAccess().getAttributeStatemachineControlFieldAttributeCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldGet
+entryRuleStatemachineActionFieldGet returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldGetRule()); }
+	 iv_ruleStatemachineActionFieldGet=ruleStatemachineActionFieldGet 
+	 { $current=$iv_ruleStatemachineActionFieldGet.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldGet
+ruleStatemachineActionFieldGet returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='get' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldGetAccess().getGetKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldGetRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldGetAccess().getAttributeStatemachineControlFieldAttributeCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionFieldRemove
+entryRuleStatemachineActionFieldRemove returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionFieldRemoveRule()); }
+	 iv_ruleStatemachineActionFieldRemove=ruleStatemachineActionFieldRemove 
+	 { $current=$iv_ruleStatemachineActionFieldRemove.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionFieldRemove
+ruleStatemachineActionFieldRemove returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='remove' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionFieldRemoveAccess().getRemoveKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionFieldRemoveRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionFieldRemoveAccess().getAttributeStatemachineControlFieldAttributeCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionItemVisible
+entryRuleStatemachineActionItemVisible returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionItemVisibleRule()); }
+	 iv_ruleStatemachineActionItemVisible=ruleStatemachineActionItemVisible 
+	 { $current=$iv_ruleStatemachineActionItemVisible.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionItemVisible
+ruleStatemachineActionItemVisible returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='visible' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionItemVisibleAccess().getVisibleKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionItemVisibleRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionItemVisibleAccess().getAttributeStatemachineControlVisibilityCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionItemInvisible
+entryRuleStatemachineActionItemInvisible returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionItemInvisibleRule()); }
+	 iv_ruleStatemachineActionItemInvisible=ruleStatemachineActionItemInvisible 
+	 { $current=$iv_ruleStatemachineActionItemInvisible.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionItemInvisible
+ruleStatemachineActionItemInvisible returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='invisible' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionItemInvisibleAccess().getInvisibleKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionItemInvisibleRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionItemInvisibleAccess().getAttributeStatemachineControlVisibilityCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionButtonCaption
+entryRuleStatemachineActionButtonCaption returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionButtonCaptionRule()); }
+	 iv_ruleStatemachineActionButtonCaption=ruleStatemachineActionButtonCaption 
+	 { $current=$iv_ruleStatemachineActionButtonCaption.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionButtonCaption
+ruleStatemachineActionButtonCaption returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='caption' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionButtonCaptionAccess().getCaptionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionButtonCaptionAccess().getCaptionStatemachineActionFieldConcatenationParserRuleCall_1_0()); 
+	    }
+		lv_caption_1_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionButtonCaptionRule());
+	        }
+       		set(
+       			$current, 
+       			"caption",
+        		lv_caption_1_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionButtonCaptionAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionButtonCaptionRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionButtonCaptionAccess().getAttributeStatemachineControlButtonAttributeCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionButtonImage
+entryRuleStatemachineActionButtonImage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionButtonImageRule()); }
+	 iv_ruleStatemachineActionButtonImage=ruleStatemachineActionButtonImage 
+	 { $current=$iv_ruleStatemachineActionButtonImage.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionButtonImage
+ruleStatemachineActionButtonImage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='image' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionButtonImageAccess().getImageKeyword_0());
+    }
+(
+(
+		lv_image_1_0=RULE_STRING
+		{
+			newLeafNode(lv_image_1_0, grammarAccess.getStatemachineActionButtonImageAccess().getImageSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionButtonImageRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"image",
+        		lv_image_1_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_2='@' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionButtonImageAccess().getCommercialAtKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionButtonImageRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionButtonImageAccess().getAttributeStatemachineControlButtonAttributeCrossReference_3_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionDTOFind
+entryRuleStatemachineActionDTOFind returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionDTOFindRule()); }
+	 iv_ruleStatemachineActionDTOFind=ruleStatemachineActionDTOFind 
+	 { $current=$iv_ruleStatemachineActionDTOFind.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionDTOFind
+ruleStatemachineActionDTOFind returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='search' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionDTOFindAccess().getSearchKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineActionDTOFindAccess().getSearchStatemachineActionFieldConcatenationParserRuleCall_1_0()); 
+	    }
+		lv_search_1_0=ruleStatemachineActionFieldConcatenation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineActionDTOFindRule());
+	        }
+       		set(
+       			$current, 
+       			"search",
+        		lv_search_1_0, 
+        		"StatemachineActionFieldConcatenation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='in' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionDTOFindAccess().getInKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionDTOFindRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionDTOFindAccess().getDtoStatemachineControlDTOAttributeCrossReference_3_0()); 
+	}
+
+)
+)	otherlv_4='.' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineActionDTOFindAccess().getFullStopKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionDTOFindRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getStatemachineActionDTOFindAccess().getAttributeLDtoInheritedAttributeCrossReference_5_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineActionScheduler
+entryRuleStatemachineActionScheduler returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineActionSchedulerRule()); }
+	 iv_ruleStatemachineActionScheduler=ruleStatemachineActionScheduler 
+	 { $current=$iv_ruleStatemachineActionScheduler.current; } 
+	 EOF 
+;
+
+// Rule StatemachineActionScheduler
+ruleStatemachineActionScheduler returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='schedule' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionSchedulerAccess().getScheduleKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineActionSchedulerRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionSchedulerAccess().getSchedulerStatemachineControlSchedulerAttributeCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControl
+entryRuleStatemachineControl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlRule()); }
+	 iv_ruleStatemachineControl=ruleStatemachineControl 
+	 { $current=$iv_ruleStatemachineControl.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControl
+ruleStatemachineControl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlAccess().getStatemachineControlButtonParserRuleCall_0()); 
+    }
+    this_StatemachineControlButton_0=ruleStatemachineControlButton
+    { 
+        $current = $this_StatemachineControlButton_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlAccess().getStatemachineControlFieldParserRuleCall_1()); 
+    }
+    this_StatemachineControlField_1=ruleStatemachineControlField
+    { 
+        $current = $this_StatemachineControlField_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlAccess().getStatemachineControlDTOParserRuleCall_2()); 
+    }
+    this_StatemachineControlDTO_2=ruleStatemachineControlDTO
+    { 
+        $current = $this_StatemachineControlDTO_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlAccess().getStatemachineControlSchedulerParserRuleCall_3()); 
+    }
+    this_StatemachineControlScheduler_3=ruleStatemachineControlScheduler
+    { 
+        $current = $this_StatemachineControlScheduler_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlAccess().getStatemachineControlPeripheralParserRuleCall_4()); 
+    }
+    this_StatemachineControlPeripheral_4=ruleStatemachineControlPeripheral
+    { 
+        $current = $this_StatemachineControlPeripheral_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButton
+entryRuleStatemachineControlButton returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonRule()); }
+	 iv_ruleStatemachineControlButton=ruleStatemachineControlButton 
+	 { $current=$iv_ruleStatemachineControlButton.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButton
+ruleStatemachineControlButton returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='keypad' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlButtonAccess().getKeypadKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlButtonAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='event' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlButtonAccess().getEventKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlButtonAccess().getEventTypeStatemachineControlButtonEventTypeEnumRuleCall_3_0()); 
+	    }
+		lv_eventType_3_0=ruleStatemachineControlButtonEventType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlButtonRule());
+	        }
+       		set(
+       			$current, 
+       			"eventType",
+        		lv_eventType_3_0, 
+        		"StatemachineControlButtonEventType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineControlButtonAccess().getLeftCurlyBracketKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlButtonAccess().getButtonsStatemachineControlButtonAttributeParserRuleCall_5_0()); 
+	    }
+		lv_buttons_5_0=ruleStatemachineControlButtonAttribute		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlButtonRule());
+	        }
+       		add(
+       			$current, 
+       			"buttons",
+        		lv_buttons_5_0, 
+        		"StatemachineControlButtonAttribute");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStatemachineControlButtonAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlField
+entryRuleStatemachineControlField returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlFieldRule()); }
+	 iv_ruleStatemachineControlField=ruleStatemachineControlField 
+	 { $current=$iv_ruleStatemachineControlField.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlField
+ruleStatemachineControlField returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='fields' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlFieldAccess().getFieldsKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlFieldAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlFieldRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlFieldAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3(), 0);
+	 				}
+					({true}?=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlFieldAccess().getFieldsStatemachineControlFieldAttributeParserRuleCall_3_0_0()); 
+	    }
+		lv_fields_4_0=ruleStatemachineControlFieldAttribute		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlFieldRule());
+	        }
+       		add(
+       			$current, 
+       			"fields",
+        		lv_fields_4_0, 
+        		"StatemachineControlFieldAttribute");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3(), 1);
+	 				}
+					({true}?=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlFieldAccess().getLayoutsStatemachineControlFieldLayoutParserRuleCall_3_1_0()); 
+	    }
+		lv_layouts_5_0=ruleStatemachineControlFieldLayout		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlFieldRule());
+	        }
+       		add(
+       			$current, 
+       			"layouts",
+        		lv_layouts_5_0, 
+        		"StatemachineControlFieldLayout");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getStatemachineControlFieldAccess().getUnorderedGroup_3());
+	}
+
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStatemachineControlFieldAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlDTO
+entryRuleStatemachineControlDTO returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlDTORule()); }
+	 iv_ruleStatemachineControlDTO=ruleStatemachineControlDTO 
+	 { $current=$iv_ruleStatemachineControlDTO.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlDTO
+ruleStatemachineControlDTO returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='dataProvider' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlDTOAccess().getDataProviderKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlDTOAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlDTORule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlDTOAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlDTOAccess().getDtosStatemachineControlDTOAttributeParserRuleCall_3_0()); 
+	    }
+		lv_dtos_3_0=ruleStatemachineControlDTOAttribute		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlDTORule());
+	        }
+       		add(
+       			$current, 
+       			"dtos",
+        		lv_dtos_3_0, 
+        		"StatemachineControlDTOAttribute");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineControlDTOAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlScheduler
+entryRuleStatemachineControlScheduler returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlSchedulerRule()); }
+	 iv_ruleStatemachineControlScheduler=ruleStatemachineControlScheduler 
+	 { $current=$iv_ruleStatemachineControlScheduler.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlScheduler
+ruleStatemachineControlScheduler returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='scheduler' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlSchedulerAccess().getSchedulerKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlSchedulerAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlSchedulerRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlSchedulerAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlSchedulerAccess().getSchedulersStatemachineControlSchedulerAttributeParserRuleCall_3_0()); 
+	    }
+		lv_schedulers_3_0=ruleStatemachineControlSchedulerAttribute		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlSchedulerRule());
+	        }
+       		add(
+       			$current, 
+       			"schedulers",
+        		lv_schedulers_3_0, 
+        		"StatemachineControlSchedulerAttribute");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineControlSchedulerAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDeviceLineDisplay
+entryRuleStatemachinePeripheralDeviceLineDisplay returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachinePeripheralDeviceLineDisplayRule()); }
+	 iv_ruleStatemachinePeripheralDeviceLineDisplay=ruleStatemachinePeripheralDeviceLineDisplay 
+	 { $current=$iv_ruleStatemachinePeripheralDeviceLineDisplay.current; } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDeviceLineDisplay
+ruleStatemachinePeripheralDeviceLineDisplay returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='lineDisplay' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getLineDisplayKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachinePeripheralDeviceLineDisplayRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDevicePOSPrinter
+entryRuleStatemachinePeripheralDevicePOSPrinter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachinePeripheralDevicePOSPrinterRule()); }
+	 iv_ruleStatemachinePeripheralDevicePOSPrinter=ruleStatemachinePeripheralDevicePOSPrinter 
+	 { $current=$iv_ruleStatemachinePeripheralDevicePOSPrinter.current; } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDevicePOSPrinter
+ruleStatemachinePeripheralDevicePOSPrinter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='posPrinter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getPosPrinterKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachinePeripheralDevicePOSPrinterRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDeviceCashDrawer
+entryRuleStatemachinePeripheralDeviceCashDrawer returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachinePeripheralDeviceCashDrawerRule()); }
+	 iv_ruleStatemachinePeripheralDeviceCashDrawer=ruleStatemachinePeripheralDeviceCashDrawer 
+	 { $current=$iv_ruleStatemachinePeripheralDeviceCashDrawer.current; } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDeviceCashDrawer
+ruleStatemachinePeripheralDeviceCashDrawer returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='cashDrawer' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getCashDrawerKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachinePeripheralDeviceCashDrawerRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachinePeripheralDevicePT
+entryRuleStatemachinePeripheralDevicePT returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachinePeripheralDevicePTRule()); }
+	 iv_ruleStatemachinePeripheralDevicePT=ruleStatemachinePeripheralDevicePT 
+	 { $current=$iv_ruleStatemachinePeripheralDevicePT.current; } 
+	 EOF 
+;
+
+// Rule StatemachinePeripheralDevicePT
+ruleStatemachinePeripheralDevicePT returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='payment' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachinePeripheralDevicePTAccess().getPaymentKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachinePeripheralDevicePTAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachinePeripheralDevicePTRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlPeripheral
+entryRuleStatemachineControlPeripheral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlPeripheralRule()); }
+	 iv_ruleStatemachineControlPeripheral=ruleStatemachineControlPeripheral 
+	 { $current=$iv_ruleStatemachineControlPeripheral.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlPeripheral
+ruleStatemachineControlPeripheral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='peripheral' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlPeripheralAccess().getPeripheralKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlPeripheralAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlPeripheralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlPeripheralAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlPeripheralAccess().getLineDisplaysStatemachinePeripheralDeviceLineDisplayParserRuleCall_3_0()); 
+	    }
+		lv_lineDisplays_3_0=ruleStatemachinePeripheralDeviceLineDisplay		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlPeripheralRule());
+	        }
+       		add(
+       			$current, 
+       			"lineDisplays",
+        		lv_lineDisplays_3_0, 
+        		"StatemachinePeripheralDeviceLineDisplay");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlPeripheralAccess().getPosPrintersStatemachinePeripheralDevicePOSPrinterParserRuleCall_4_0()); 
+	    }
+		lv_posPrinters_4_0=ruleStatemachinePeripheralDevicePOSPrinter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlPeripheralRule());
+	        }
+       		add(
+       			$current, 
+       			"posPrinters",
+        		lv_posPrinters_4_0, 
+        		"StatemachinePeripheralDevicePOSPrinter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlPeripheralAccess().getCashDrawersStatemachinePeripheralDeviceCashDrawerParserRuleCall_5_0()); 
+	    }
+		lv_cashDrawers_5_0=ruleStatemachinePeripheralDeviceCashDrawer		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlPeripheralRule());
+	        }
+       		add(
+       			$current, 
+       			"cashDrawers",
+        		lv_cashDrawers_5_0, 
+        		"StatemachinePeripheralDeviceCashDrawer");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlPeripheralAccess().getPaymentTerminalsStatemachinePeripheralDevicePTParserRuleCall_6_0()); 
+	    }
+		lv_paymentTerminals_6_0=ruleStatemachinePeripheralDevicePT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlPeripheralRule());
+	        }
+       		add(
+       			$current, 
+       			"paymentTerminals",
+        		lv_paymentTerminals_6_0, 
+        		"StatemachinePeripheralDevicePT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStatemachineControlPeripheralAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttribute
+entryRuleStatemachineControlButtonAttribute returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeRule()); }
+	 iv_ruleStatemachineControlButtonAttribute=ruleStatemachineControlButtonAttribute 
+	 { $current=$iv_ruleStatemachineControlButtonAttribute.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttribute
+ruleStatemachineControlButtonAttribute returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='button' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlButtonAttributeAccess().getButtonKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlButtonAttributeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_hasImage_2_0=	'image' 
+    {
+        newLeafNode(lv_hasImage_2_0, grammarAccess.getStatemachineControlButtonAttributeAccess().getHasImageImageKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonAttributeRule());
+	        }
+       		setWithLastConsumed($current, "hasImage", true, "image");
+	    }
+
+)
+)(
+(
+		lv_image_3_0=RULE_STRING
+		{
+			newLeafNode(lv_image_3_0, grammarAccess.getStatemachineControlButtonAttributeAccess().getImageSTRINGTerminalRuleCall_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonAttributeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"image",
+        		lv_image_3_0, 
+        		"STRING");
+	    }
+
+)
+))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeAccess().getEventStatemachineControlButtonAttributeEventParserRuleCall_3_0()); 
+	    }
+		lv_event_4_0=ruleStatemachineControlButtonAttributeEvent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlButtonAttributeRule());
+	        }
+       		set(
+       			$current, 
+       			"event",
+        		lv_event_4_0, 
+        		"StatemachineControlButtonAttributeEvent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEvent
+entryRuleStatemachineControlButtonAttributeEvent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventRule()); }
+	 iv_ruleStatemachineControlButtonAttributeEvent=ruleStatemachineControlButtonAttributeEvent 
+	 { $current=$iv_ruleStatemachineControlButtonAttributeEvent.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEvent
+ruleStatemachineControlButtonAttributeEvent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0()); 
+    }
+    this_StatemachineControlButtonAttributeEventKeyboard_0=ruleStatemachineControlButtonAttributeEventKeyboard
+    { 
+        $current = $this_StatemachineControlButtonAttributeEventKeyboard_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventIdentityParserRuleCall_1()); 
+    }
+    this_StatemachineControlButtonAttributeEventIdentity_1=ruleStatemachineControlButtonAttributeEventIdentity
+    { 
+        $current = $this_StatemachineControlButtonAttributeEventIdentity_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventAccess().getStatemachineControlButtonAttributeEventEventParserRuleCall_2()); 
+    }
+    this_StatemachineControlButtonAttributeEventEvent_2=ruleStatemachineControlButtonAttributeEventEvent
+    { 
+        $current = $this_StatemachineControlButtonAttributeEventEvent_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventKeyboard
+entryRuleStatemachineControlButtonAttributeEventKeyboard returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardRule()); }
+	 iv_ruleStatemachineControlButtonAttributeEventKeyboard=ruleStatemachineControlButtonAttributeEventKeyboard 
+	 { $current=$iv_ruleStatemachineControlButtonAttributeEventKeyboard.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventKeyboard
+ruleStatemachineControlButtonAttributeEventKeyboard returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getStatemachineControlButtonAttributeEventKeyboardAction_0(),
+            $current);
+    }
+)	otherlv_1='key' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getKeyKeyword_1());
+    }
+(
+(
+		lv_keystroke_2_0=RULE_STRING
+		{
+			newLeafNode(lv_keystroke_2_0, grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getKeystrokeSTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"keystroke",
+        		lv_keystroke_2_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventIdentity
+entryRuleStatemachineControlButtonAttributeEventIdentity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventIdentityRule()); }
+	 iv_ruleStatemachineControlButtonAttributeEventIdentity=ruleStatemachineControlButtonAttributeEventIdentity 
+	 { $current=$iv_ruleStatemachineControlButtonAttributeEventIdentity.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventIdentity
+ruleStatemachineControlButtonAttributeEventIdentity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getStatemachineControlButtonAttributeEventIdentityAction_0(),
+            $current);
+    }
+)	otherlv_1='id' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getIdKeyword_1());
+    }
+(
+(
+		lv_identity_2_0=RULE_INT
+		{
+			newLeafNode(lv_identity_2_0, grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getIdentityINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonAttributeEventIdentityRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"identity",
+        		lv_identity_2_0, 
+        		"INT");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlButtonAttributeEventEvent
+entryRuleStatemachineControlButtonAttributeEventEvent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlButtonAttributeEventEventRule()); }
+	 iv_ruleStatemachineControlButtonAttributeEventEvent=ruleStatemachineControlButtonAttributeEventEvent 
+	 { $current=$iv_ruleStatemachineControlButtonAttributeEventEvent.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlButtonAttributeEventEvent
+ruleStatemachineControlButtonAttributeEventEvent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getStatemachineControlButtonAttributeEventEventAction_0(),
+            $current);
+    }
+)	otherlv_1='event' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getEventKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlButtonAttributeEventEventRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getEventStatemachineEventCrossReference_2_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlFieldAttribute
+entryRuleStatemachineControlFieldAttribute returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlFieldAttributeRule()); }
+	 iv_ruleStatemachineControlFieldAttribute=ruleStatemachineControlFieldAttribute 
+	 { $current=$iv_ruleStatemachineControlFieldAttribute.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlFieldAttribute
+ruleStatemachineControlFieldAttribute returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='field' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlFieldAttributeAccess().getFieldKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlFieldAttributeAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlFieldAttributeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='type' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlFieldAttributeAccess().getTypeKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlFieldAttributeAccess().getAttributeTypeStatemachineFieldTypeParserRuleCall_3_0()); 
+	    }
+		lv_attributeType_3_0=ruleStatemachineFieldType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlFieldAttributeRule());
+	        }
+       		set(
+       			$current, 
+       			"attributeType",
+        		lv_attributeType_3_0, 
+        		"StatemachineFieldType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlFieldLayout
+entryRuleStatemachineControlFieldLayout returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlFieldLayoutRule()); }
+	 iv_ruleStatemachineControlFieldLayout=ruleStatemachineControlFieldLayout 
+	 { $current=$iv_ruleStatemachineControlFieldLayout.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlFieldLayout
+ruleStatemachineControlFieldLayout returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='layout' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlFieldLayoutAccess().getLayoutKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlFieldLayoutAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlFieldLayoutRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlDTOAttribute
+entryRuleStatemachineControlDTOAttribute returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlDTOAttributeRule()); }
+	 iv_ruleStatemachineControlDTOAttribute=ruleStatemachineControlDTOAttribute 
+	 { $current=$iv_ruleStatemachineControlDTOAttribute.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlDTOAttribute
+ruleStatemachineControlDTOAttribute returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='dto' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlDTOAttributeAccess().getDtoKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlDTOAttributeAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlDTOAttributeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='type' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlDTOAttributeAccess().getTypeKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineControlDTOAttributeAccess().getAttributeTypeStatemachineDTOTypeParserRuleCall_3_0()); 
+	    }
+		lv_attributeType_3_0=ruleStatemachineDTOType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineControlDTOAttributeRule());
+	        }
+       		set(
+       			$current, 
+       			"attributeType",
+        		lv_attributeType_3_0, 
+        		"StatemachineDTOType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_hasEvent_4_0=	'event' 
+    {
+        newLeafNode(lv_hasEvent_4_0, grammarAccess.getStatemachineControlDTOAttributeAccess().getHasEventEventKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlDTOAttributeRule());
+	        }
+       		setWithLastConsumed($current, "hasEvent", true, "event");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlDTOAttributeRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getStatemachineControlDTOAttributeAccess().getEventStatemachineEventCrossReference_4_1_0()); 
+	}
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineControlSchedulerAttribute
+entryRuleStatemachineControlSchedulerAttribute returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineControlSchedulerAttributeRule()); }
+	 iv_ruleStatemachineControlSchedulerAttribute=ruleStatemachineControlSchedulerAttribute 
+	 { $current=$iv_ruleStatemachineControlSchedulerAttribute.current; } 
+	 EOF 
+;
+
+// Rule StatemachineControlSchedulerAttribute
+ruleStatemachineControlSchedulerAttribute returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='scheduler' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getSchedulerKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlSchedulerAttributeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='delay' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getDelayKeyword_2());
+    }
+(
+(
+		lv_delay_3_0=RULE_INT
+		{
+			newLeafNode(lv_delay_3_0, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getDelayINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlSchedulerAttributeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"delay",
+        		lv_delay_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4='send' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getSendKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineControlSchedulerAttributeRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getStatemachineControlSchedulerAttributeAccess().getEventStatemachineEventCrossReference_5_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineDTOType
+entryRuleStatemachineDTOType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineDTOTypeRule()); }
+	 iv_ruleStatemachineDTOType=ruleStatemachineDTOType 
+	 { $current=$iv_ruleStatemachineDTOType.current; } 
+	 EOF 
+;
+
+// Rule StatemachineDTOType
+ruleStatemachineDTOType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStatemachineDTOTypeRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getStatemachineDTOTypeAccess().getAttributeTypeLDtoCrossReference_0()); 
+	}
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineFieldType
+entryRuleStatemachineFieldType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineFieldTypeRule()); }
+	 iv_ruleStatemachineFieldType=ruleStatemachineFieldType 
+	 { $current=$iv_ruleStatemachineFieldType.current; } 
+	 EOF 
+;
+
+// Rule StatemachineFieldType
+ruleStatemachineFieldType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineFieldTypeAccess().getAttributeTypeStatemachineInternalTypeEnumRuleCall_0()); 
+	    }
+		lv_attributeType_0_0=ruleStatemachineInternalType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineFieldTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"attributeType",
+        		lv_attributeType_0_0, 
+        		"StatemachineInternalType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineImport
+entryRuleStatemachineImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineImportRule()); }
+	 iv_ruleStatemachineImport=ruleStatemachineImport 
+	 { $current=$iv_ruleStatemachineImport.current; } 
+	 EOF 
+;
+
+// Rule StatemachineImport
+ruleStatemachineImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStatemachineImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStatemachineImportAccess().getImportedNamespaceStatemachineQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleStatemachineQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStatemachineImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"StatemachineQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStatemachineQualifiedNameWithWildCard
+entryRuleStatemachineQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStatemachineQualifiedNameWithWildCardRule()); } 
+	 iv_ruleStatemachineQualifiedNameWithWildCard=ruleStatemachineQualifiedNameWithWildCard 
+	 { $current=$iv_ruleStatemachineQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule StatemachineQualifiedNameWithWildCard
+ruleStatemachineQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getStatemachineQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// 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 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 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 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()); 
+    }
+)?
+    { 
+        newCompositeNode(grammarAccess.getSignedNumberAccess().getUnsignedNumberParserRuleCall_1()); 
+    }
+    this_UnsignedNumber_1=ruleUnsignedNumber    {
+		$current.merge(this_UnsignedNumber_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnsignedNumber
+entryRuleUnsignedNumber returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnsignedNumberRule()); } 
+	 iv_ruleUnsignedNumber=ruleUnsignedNumber 
+	 { $current=$iv_ruleUnsignedNumber.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnsignedNumber
+ruleUnsignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUnsignedNumberAccess().getINTTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnsignedNumberAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getUnsignedNumberAccess().getINTTerminalRuleCall_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
+	 iv_ruleXAnnotation=ruleXAnnotation 
+	 { $current=$iv_ruleXAnnotation.current; } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+            $current);
+    }
+)	otherlv_1='@' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'(' 
+)=>	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+    }
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+	    }
+		lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_4_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+    }
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+	    }
+		lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_6_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+	    }
+		lv_value_7_0=ruleXAnnotationElementValueOrCommaList		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"XAnnotationElementValueOrCommaList");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair 
+	 { $current=$iv_ruleXAnnotationElementValuePair.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+	    }
+		lv_value_2_0=ruleXAnnotationElementValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"XAnnotationElementValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList 
+	 { $current=$iv_ruleXAnnotationElementValueOrCommaList.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndAdd(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+            $current);
+    }
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_elements_10_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_10_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+)?))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
+	 iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue 
+	 { $current=$iv_ruleXAnnotationElementValue.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression 
+	 { $current=$iv_ruleXAnnotationOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+    }
+    this_XAnnotation_0=ruleXAnnotation
+    { 
+        $current = $this_XAnnotation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
+	 iv_ruleXExpression=ruleXExpression 
+	 { $current=$iv_ruleXExpression.current; } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+    }
+    this_XAssignment_0=ruleXAssignment
+    { 
+        $current = $this_XAssignment_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
+	 iv_ruleXAssignment=ruleXAssignment 
+	 { $current=$iv_ruleXAssignment.current; } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+	    }
+		lv_value_3_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XOrExpression_4=ruleXOrExpression
+    { 
+        $current = $this_XOrExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpMultiAssign		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_7_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_7_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+;
+
+
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); } 
+	 iv_ruleOpSingleAssign=ruleOpSingleAssign 
+	 { $current=$iv_ruleOpSingleAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); } 
+	 iv_ruleOpMultiAssign=ruleOpMultiAssign 
+	 { $current=$iv_ruleOpMultiAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='-=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='*=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='/=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+    }
+
+    |
+	kw='%=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+    }
+)
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+    }
+(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+    }
+)?
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+    }
+))
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
+	 iv_ruleXOrExpression=ruleXOrExpression 
+	 { $current=$iv_ruleXOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+    }
+    this_XAndExpression_0=ruleXAndExpression
+    { 
+        $current = $this_XAndExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOrExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOr		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAndExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAndExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOrRule()); } 
+	 iv_ruleOpOr=ruleOpOr 
+	 { $current=$iv_ruleOpOr.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='||' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
+	 iv_ruleXAndExpression=ruleXAndExpression 
+	 { $current=$iv_ruleXAndExpression.current; } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+    }
+    this_XEqualityExpression_0=ruleXEqualityExpression
+    { 
+        $current = $this_XEqualityExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAndExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAnd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXEqualityExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XEqualityExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAndRule()); } 
+	 iv_ruleOpAnd=ruleOpAnd 
+	 { $current=$iv_ruleOpAnd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='&&' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
+	 iv_ruleXEqualityExpression=ruleXEqualityExpression 
+	 { $current=$iv_ruleXEqualityExpression.current; } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+    }
+    this_XRelationalExpression_0=ruleXRelationalExpression
+    { 
+        $current = $this_XRelationalExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpEquality		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXRelationalExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XRelationalExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpEqualityRule()); } 
+	 iv_ruleOpEquality=ruleOpEquality 
+	 { $current=$iv_ruleOpEquality.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='!=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='===' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='!==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
+	 iv_ruleXRelationalExpression=ruleXRelationalExpression 
+	 { $current=$iv_ruleXRelationalExpression.current; } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+    }
+    this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
+    { 
+        $current = $this_XOtherOperatorExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)	'instanceof' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            $current);
+    }
+)	otherlv_2='instanceof' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpCompare		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_6_0=ruleXOtherOperatorExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_6_0, 
+        		"XOtherOperatorExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpCompareRule()); } 
+	 iv_ruleOpCompare=ruleOpCompare 
+	 { $current=$iv_ruleOpCompare.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+    }
+)
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression 
+	 { $current=$iv_ruleXOtherOperatorExpression.current; } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+    }
+    this_XAdditiveExpression_0=ruleXAdditiveExpression
+    { 
+        $current = $this_XAdditiveExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOther		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAdditiveExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAdditiveExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOtherRule()); } 
+	 iv_ruleOpOther=ruleOpOther 
+	 { $current=$iv_ruleOpOther.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+    }
+
+    |
+	kw='..<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+    }
+
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+    }
+)
+    |
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+    }
+((((
+	'>' 
+
+	'>' 
+))=>(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+    }
+
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+    }
+))
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+    }
+))
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+    }
+((((
+	'<' 
+
+	'<' 
+))=>(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+    }
+))
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+    }
+))
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+    }
+
+    |
+	kw='?:' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
+	 iv_ruleXAdditiveExpression=ruleXAdditiveExpression 
+	 { $current=$iv_ruleXAdditiveExpression.current; } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+    }
+    this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
+    { 
+        $current = $this_XMultiplicativeExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAdd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXMultiplicativeExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XMultiplicativeExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAddRule()); } 
+	 iv_ruleOpAdd=ruleOpAdd 
+	 { $current=$iv_ruleOpAdd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression 
+	 { $current=$iv_ruleXMultiplicativeExpression.current; } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+    }
+    this_XUnaryOperation_0=ruleXUnaryOperation
+    { 
+        $current = $this_XUnaryOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpMulti		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiRule()); } 
+	 iv_ruleOpMulti=ruleOpMulti 
+	 { $current=$iv_ruleOpMulti.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='**' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+    }
+
+    |
+	kw='%' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
+	 iv_ruleXUnaryOperation=ruleXUnaryOperation 
+	 { $current=$iv_ruleXUnaryOperation.current; } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXUnaryOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleOpUnary		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+	    }
+		lv_operand_2_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"operand",
+        		lv_operand_2_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+    { 
+        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+    }
+    this_XCastedExpression_3=ruleXCastedExpression
+    { 
+        $current = $this_XCastedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpUnaryRule()); } 
+	 iv_ruleOpUnary=ruleOpUnary 
+	 { $current=$iv_ruleOpUnary.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='!' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
+	 iv_ruleXCastedExpression=ruleXCastedExpression 
+	 { $current=$iv_ruleXCastedExpression.current; } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+    }
+    this_XPostfixOperation_0=ruleXPostfixOperation
+    { 
+        $current = $this_XPostfixOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)	'as' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            $current);
+    }
+)	otherlv_2='as' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
+	 iv_ruleXPostfixOperation=ruleXPostfixOperation 
+	 { $current=$iv_ruleXPostfixOperation.current; } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+    }
+    this_XMemberFeatureCall_0=ruleXMemberFeatureCall
+    { 
+        $current = $this_XMemberFeatureCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXPostfixOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+	    }
+		ruleOpPostfix		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpPostfixRule()); } 
+	 iv_ruleOpPostfix=ruleOpPostfix 
+	 { $current=$iv_ruleOpPostfix.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='++' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='--' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
+	 iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall 
+	 { $current=$iv_ruleXMemberFeatureCall.current; } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
+    }
+    this_XPrimaryExpression_0=ruleXPrimaryExpression
+    { 
+        $current = $this_XPrimaryExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            $current);
+    }
+)(	otherlv_2='.' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+    }
+
+    |(
+(
+		lv_explicitStatic_3_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
+	    }
+		lv_value_6_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_6_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            $current);
+    }
+)(	otherlv_8='.' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+    }
+
+    |(
+(
+		lv_nullSafe_9_0=	'?.' 
+    {
+        newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "nullSafe", true, "?.");
+	    }
+
+)
+)
+    |(
+(
+		lv_explicitStatic_10_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))))(	otherlv_11='<' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_typeArguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_13=',' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
+	    }
+		lv_typeArguments_14_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_14_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_15='>' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+    }
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+	    }
+		ruleIdOrSuper		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitOperationCall_17_0=	'(' 
+    {
+        newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
+	    }
+		lv_memberCallArguments_18_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_18_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
+	    }
+		lv_memberCallArguments_19_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_19_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
+	    }
+		lv_memberCallArguments_21_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_21_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_22=')' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
+	    }
+		lv_memberCallArguments_23_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_23_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
+	 iv_ruleXPrimaryExpression=ruleXPrimaryExpression 
+	 { $current=$iv_ruleXPrimaryExpression.current; } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
+    }
+    this_XConstructorCall_0=ruleXConstructorCall
+    { 
+        $current = $this_XConstructorCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
+    }
+    this_XBlockExpression_1=ruleXBlockExpression
+    { 
+        $current = $this_XBlockExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
+    }
+    this_XSwitchExpression_2=ruleXSwitchExpression
+    { 
+        $current = $this_XSwitchExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'synchronized' 
+	'(' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+    }
+    this_XSynchronizedExpression_3=ruleXSynchronizedExpression
+    { 
+        $current = $this_XSynchronizedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
+    }
+    this_XFeatureCall_4=ruleXFeatureCall
+    { 
+        $current = $this_XFeatureCall_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
+    }
+    this_XLiteral_5=ruleXLiteral
+    { 
+        $current = $this_XLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
+    }
+    this_XIfExpression_6=ruleXIfExpression
+    { 
+        $current = $this_XIfExpression_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+    }
+    this_XForLoopExpression_7=ruleXForLoopExpression
+    { 
+        $current = $this_XForLoopExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+    }
+    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
+    { 
+        $current = $this_XBasicForLoopExpression_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
+    }
+    this_XWhileExpression_9=ruleXWhileExpression
+    { 
+        $current = $this_XWhileExpression_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
+    }
+    this_XDoWhileExpression_10=ruleXDoWhileExpression
+    { 
+        $current = $this_XDoWhileExpression_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
+    }
+    this_XThrowExpression_11=ruleXThrowExpression
+    { 
+        $current = $this_XThrowExpression_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
+    }
+    this_XReturnExpression_12=ruleXReturnExpression
+    { 
+        $current = $this_XReturnExpression_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
+    }
+    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
+    { 
+        $current = $this_XTryCatchFinallyExpression_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
+    }
+    this_XParenthesizedExpression_14=ruleXParenthesizedExpression
+    { 
+        $current = $this_XParenthesizedExpression_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
+	 iv_ruleXLiteral=ruleXLiteral 
+	 { $current=$iv_ruleXLiteral.current; } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
+    }
+    this_XCollectionLiteral_0=ruleXCollectionLiteral
+    { 
+        $current = $this_XCollectionLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'[' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+    }
+    this_XClosure_1=ruleXClosure
+    { 
+        $current = $this_XClosure_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
+    }
+    this_XBooleanLiteral_2=ruleXBooleanLiteral
+    { 
+        $current = $this_XBooleanLiteral_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
+    }
+    this_XNumberLiteral_3=ruleXNumberLiteral
+    { 
+        $current = $this_XNumberLiteral_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
+    }
+    this_XNullLiteral_4=ruleXNullLiteral
+    { 
+        $current = $this_XNullLiteral_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
+    }
+    this_XStringLiteral_5=ruleXStringLiteral
+    { 
+        $current = $this_XStringLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
+    }
+    this_XTypeLiteral_6=ruleXTypeLiteral
+    { 
+        $current = $this_XTypeLiteral_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
+	 iv_ruleXCollectionLiteral=ruleXCollectionLiteral 
+	 { $current=$iv_ruleXCollectionLiteral.current; } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
+    }
+    this_XSetLiteral_0=ruleXSetLiteral
+    { 
+        $current = $this_XSetLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
+    }
+    this_XListLiteral_1=ruleXListLiteral
+    { 
+        $current = $this_XListLiteral_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
+	 iv_ruleXSetLiteral=ruleXSetLiteral 
+	 { $current=$iv_ruleXSetLiteral.current; } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
+	 iv_ruleXListLiteral=ruleXListLiteral 
+	 { $current=$iv_ruleXListLiteral.current; } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXClosureRule()); }
+	 iv_ruleXClosure=ruleXClosure 
+	 { $current=$iv_ruleXClosure.current; } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+    }
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
+	    }
+		lv_declaredFormalParameters_2_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_2_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_4_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_4_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_5_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
+	    }
+		lv_expression_6_0=ruleXExpressionInClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_6_0, 
+        		"XExpressionInClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=']' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
+	 iv_ruleXExpressionInClosure=ruleXExpressionInClosure 
+	 { $current=$iv_ruleXExpressionInClosure.current; } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
+	    }
+		lv_expressions_1_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"expressions",
+        		lv_expressions_1_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+    }
+)?)*)
+;
+
+
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
+	 iv_ruleXShortClosure=ruleXShortClosure 
+	 { $current=$iv_ruleXShortClosure.current; } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
+	    }
+		lv_declaredFormalParameters_1_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_1_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_4_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXShortClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
+	 iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression 
+	 { $current=$iv_ruleXParenthesizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.tokens b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.tokens
new file mode 100644
index 0000000..996b04c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.tokens
@@ -0,0 +1,525 @@
+'!'=155
+'!='=142
+'!=='=144
+'#'=128
+'%'=154
+'%='=135
+'&&'=140
+'&'=190
+'('=84
+')'=85
+'*'=125
+'**'=152
+'*='=133
+'+'=97
+'++'=157
+'+='=131
+','=99
+'-'=126
+'--'=158
+'-='=132
+'->'=146
+'.'=93
+'..'=148
+'..<'=147
+'/'=153
+'/='=134
+':'=166
+'::'=159
+';'=162
+'<'=136
+'<>'=150
+'='=127
+'=='=141
+'==='=143
+'=>'=149
+'>'=137
+'>='=138
+'?'=189
+'?.'=160
+'?:'=151
+'@'=29
+'Boolean'=191
+'Date'=196
+'Double'=194
+'Integer'=192
+'Long'=193
+'String'=195
+'SuggestText'=197
+'['=129
+']'=130
+'actions'=33
+'and'=30
+'as'=156
+'assistive'=217
+'aztec'=269
+'barcodeType'=62
+'blink'=225
+'blinkRate'=35
+'blinkreverse'=234
+'block'=220
+'button'=118
+'caption'=88
+'case'=168
+'cashDrawer'=115
+'catch'=188
+'clear'=101
+'clearDevice'=36
+'code128'=246
+'code128_parsed'=259
+'code39'=244
+'code93'=245
+'codeabar'=243
+'column'=39
+'configuration'=77
+'controls'=22
+'createWindow'=37
+'cursorType'=44
+'data'=61
+'dataProvider'=111
+'datamatrix'=266
+'default'=167
+'delay'=122
+'described by'=17
+'description'=89
+'destroyWindow'=45
+'deviceBrightness'=46
+'displayBitmap'=47
+'displayText'=49
+'displayTextAt'=52
+'do'=171
+'down'=227
+'dto'=96
+'ean128'=256
+'ean13'=240
+'ean13_s'=255
+'ean8'=238
+'ean8_s'=254
+'else'=164
+'error'=215
+'event'=24
+'events'=21
+'extends'=174
+'extension'=176
+'false'=179
+'field'=120
+'fields'=110
+'finally'=186
+'fixed'=219
+'for'=169
+'from'=81
+'function'=90
+'functiongroup'=18
+'get'=98
+'getBrowserLocale'=204
+'getIPAddress'=199
+'getNow'=200
+'getSceenWidth'=210
+'getScreenHeight'=211
+'getTrigger'=212
+'getUserAgentInfo'=201
+'getUserEmail'=207
+'getUserName'=205
+'getUserPassword'=206
+'getUserPosition'=208
+'getUserPrintService'=209
+'gs1databar'=260
+'gs1databar_e'=261
+'gs1databar_e_s'=263
+'gs1databar_s'=262
+'guard'=86
+'guards'=32
+'halfblock'=221
+'height'=40
+'host'=69
+'humanized'=213
+'id'=48
+'identity'=27
+'if'=163
+'image'=105
+'import'=124
+'in'=107
+'init'=230
+'initialEvent'=20
+'initialState'=19
+'instanceof'=145
+'interCharacterWait'=53
+'invisible'=104
+'isHttps'=203
+'isTouchDevice'=202
+'itf'=242
+'jan13'=239
+'jan8'=237
+'key'=119
+'keyboard'=198
+'keypad'=109
+'keystroke'=28
+'layout'=121
+'left'=228
+'lineDisplay'=113
+'marqueeFormat'=54
+'marqueeRepeatWait'=55
+'marqueeType'=56
+'marqueeUnitWait'=57
+'maxicode'=265
+'name'=67
+'new'=178
+'none'=218
+'normal'=233
+'null'=181
+'ocrb'=258
+'ofAmount'=79
+'ofReceipt'=75
+'onFail'=87
+'openDrawer'=59
+'operation'=83
+'orca'=257
+'other'=224
+'package'=13
+'payment'=116
+'paymentAcknowledge'=72
+'paymentAuthorization'=78
+'paymentClose'=71
+'paymentOpen'=68
+'paymentRegistration'=76
+'paymentResponse'=80
+'paymentReversal'=73
+'pdf417'=264
+'peripheral'=117
+'place'=232
+'port'=70
+'posPrinter'=114
+'printBarcode'=60
+'printBitmap'=63
+'printCut'=64
+'printNormal'=65
+'printReport'=82
+'qrcode'=267
+'registerBitmap'=66
+'remove'=102
+'retrieve'=94
+'return'=184
+'reverse'=223
+'right'=229
+'row'=38
+'schedule'=108
+'scheduler'=112
+'scroll'=58
+'search'=106
+'send'=123
+'set'=100
+'state'=25
+'statemachine'=16
+'states'=23
+'static'=175
+'store'=91
+'super'=177
+'switch'=165
+'synchronized'=187
+'text'=50
+'tf'=241
+'throw'=183
+'transition'=34
+'translate'=95
+'tray'=216
+'trigger'=31
+'triggers'=26
+'true'=180
+'try'=185
+'type'=51
+'typeof'=182
+'underline'=222
+'up'=226
+'upca'=235
+'upca_s'=247
+'upcb'=236
+'upcd1'=249
+'upcd2'=250
+'upcd3'=251
+'upcd4'=252
+'upcd5'=253
+'upce_s'=248
+'updf417'=270
+'uqrcode'=268
+'val'=173
+'var'=172
+'visible'=103
+'walk'=231
+'warning'=214
+'while'=170
+'width'=41
+'windowHeight'=42
+'windowWidth'=43
+'with'=92
+'withPassword'=74
+'{'=14
+'|'=161
+'||'=139
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=4
+RULE_INT=5
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=6
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__162=162
+T__163=163
+T__164=164
+T__165=165
+T__166=166
+T__167=167
+T__168=168
+T__169=169
+T__16=16
+T__170=170
+T__171=171
+T__172=172
+T__173=173
+T__174=174
+T__175=175
+T__176=176
+T__177=177
+T__178=178
+T__179=179
+T__17=17
+T__180=180
+T__181=181
+T__182=182
+T__183=183
+T__184=184
+T__185=185
+T__186=186
+T__187=187
+T__188=188
+T__189=189
+T__18=18
+T__190=190
+T__191=191
+T__192=192
+T__193=193
+T__194=194
+T__195=195
+T__196=196
+T__197=197
+T__198=198
+T__199=199
+T__19=19
+T__200=200
+T__201=201
+T__202=202
+T__203=203
+T__204=204
+T__205=205
+T__206=206
+T__207=207
+T__208=208
+T__209=209
+T__20=20
+T__210=210
+T__211=211
+T__212=212
+T__213=213
+T__214=214
+T__215=215
+T__216=216
+T__217=217
+T__218=218
+T__219=219
+T__21=21
+T__220=220
+T__221=221
+T__222=222
+T__223=223
+T__224=224
+T__225=225
+T__226=226
+T__227=227
+T__228=228
+T__229=229
+T__22=22
+T__230=230
+T__231=231
+T__232=232
+T__233=233
+T__234=234
+T__235=235
+T__236=236
+T__237=237
+T__238=238
+T__239=239
+T__23=23
+T__240=240
+T__241=241
+T__242=242
+T__243=243
+T__244=244
+T__245=245
+T__246=246
+T__247=247
+T__248=248
+T__249=249
+T__24=24
+T__250=250
+T__251=251
+T__252=252
+T__253=253
+T__254=254
+T__255=255
+T__256=256
+T__257=257
+T__258=258
+T__259=259
+T__25=25
+T__260=260
+T__261=261
+T__262=262
+T__263=263
+T__264=264
+T__265=265
+T__266=266
+T__267=267
+T__268=268
+T__269=269
+T__26=26
+T__270=270
+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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLLexer.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLLexer.java
new file mode 100644
index 0000000..40d39d6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLLexer.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 InternalStatemachineDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__265=265;
+    public static final int T__143=143;
+    public static final int T__264=264;
+    public static final int T__146=146;
+    public static final int T__267=267;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__266=266;
+    public static final int T__140=140;
+    public static final int T__261=261;
+    public static final int T__260=260;
+    public static final int T__142=142;
+    public static final int T__263=263;
+    public static final int T__141=141;
+    public static final int T__262=262;
+    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__258=258;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__257=257;
+    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__259=259;
+    public static final int T__133=133;
+    public static final int T__254=254;
+    public static final int T__132=132;
+    public static final int T__253=253;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__256=256;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int T__255=255;
+    public static final int T__250=250;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__252=252;
+    public static final int T__130=130;
+    public static final int T__251=251;
+    public static final int RULE_INT=5;
+    public static final int T__66=66;
+    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__247=247;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__246=246;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__249=249;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__248=248;
+    public static final int T__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    public static final int T__270=270;
+    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__269=269;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__268=268;
+    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__100=100;
+    public static final int T__221=221;
+    public static final int T__220=220;
+    public static final int T__102=102;
+    public static final int T__223=223;
+    public static final int T__101=101;
+    public static final int T__222=222;
+    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__218=218;
+    public static final int T__217=217;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__219=219;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__216=216;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__243=243;
+    public static final int T__121=121;
+    public static final int T__242=242;
+    public static final int T__124=124;
+    public static final int T__245=245;
+    public static final int T__123=123;
+    public static final int T__244=244;
+    public static final int T__120=120;
+    public static final int T__241=241;
+    public static final int T__240=240;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__239=239;
+    public static final int T__115=115;
+    public static final int T__236=236;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__235=235;
+    public static final int T__117=117;
+    public static final int T__238=238;
+    public static final int T__116=116;
+    public static final int T__237=237;
+    public static final int T__111=111;
+    public static final int T__232=232;
+    public static final int T__110=110;
+    public static final int T__231=231;
+    public static final int T__113=113;
+    public static final int T__234=234;
+    public static final int T__112=112;
+    public static final int T__233=233;
+    public static final int T__230=230;
+    public static final int T__108=108;
+    public static final int T__229=229;
+    public static final int T__107=107;
+    public static final int T__228=228;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__225=225;
+    public static final int T__103=103;
+    public static final int T__224=224;
+    public static final int T__106=106;
+    public static final int T__227=227;
+    public static final int T__105=105;
+    public static final int T__226=226;
+    public static final int RULE_HEX=7;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=6;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalStatemachineDSLLexer() {;} 
+    public InternalStatemachineDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalStatemachineDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:14:7: ( 'statemachine' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:14:9: 'statemachine'
+            {
+            match("statemachine"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:15:7: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:16:7: ( 'functiongroup' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:16:9: 'functiongroup'
+            {
+            match("functiongroup"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:17:7: ( 'initialState' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:17:9: 'initialState'
+            {
+            match("initialState"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:18:7: ( 'initialEvent' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:18:9: 'initialEvent'
+            {
+            match("initialEvent"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:19:7: ( 'events' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:19:9: 'events'
+            {
+            match("events"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:20:7: ( 'controls' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:20:9: 'controls'
+            {
+            match("controls"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:21:7: ( 'states' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:21:9: 'states'
+            {
+            match("states"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:22:7: ( 'event' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:22:9: 'event'
+            {
+            match("event"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:23:7: ( 'state' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:23:9: 'state'
+            {
+            match("state"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:24:7: ( 'triggers' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:24:9: 'triggers'
+            {
+            match("triggers"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:25:7: ( 'identity' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:25:9: 'identity'
+            {
+            match("identity"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:26:7: ( 'keystroke' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:26:9: 'keystroke'
+            {
+            match("keystroke"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:27:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:28:7: ( 'and' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:28:9: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:29:7: ( 'trigger' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:29:9: 'trigger'
+            {
+            match("trigger"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:30:7: ( 'guards' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:30:9: 'guards'
+            {
+            match("guards"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:31:7: ( 'actions' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:31:9: 'actions'
+            {
+            match("actions"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:32:7: ( 'transition' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:32:9: 'transition'
+            {
+            match("transition"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:33:7: ( 'blinkRate' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:33:9: 'blinkRate'
+            {
+            match("blinkRate"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:34:7: ( 'clearDevice' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:34:9: 'clearDevice'
+            {
+            match("clearDevice"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:35:7: ( 'createWindow' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:35:9: 'createWindow'
+            {
+            match("createWindow"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:36:7: ( 'row' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:36:9: 'row'
+            {
+            match("row"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:37:7: ( 'column' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:37:9: 'column'
+            {
+            match("column"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:38:7: ( 'height' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:38:9: 'height'
+            {
+            match("height"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:39:7: ( 'width' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:39:9: 'width'
+            {
+            match("width"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:40:7: ( 'windowHeight' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:40:9: 'windowHeight'
+            {
+            match("windowHeight"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:41:7: ( 'windowWidth' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:41:9: 'windowWidth'
+            {
+            match("windowWidth"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:42:7: ( 'cursorType' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:42:9: 'cursorType'
+            {
+            match("cursorType"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:43:7: ( 'destroyWindow' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:43:9: 'destroyWindow'
+            {
+            match("destroyWindow"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:44:7: ( 'deviceBrightness' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:44:9: 'deviceBrightness'
+            {
+            match("deviceBrightness"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:45:7: ( 'displayBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:45:9: 'displayBitmap'
+            {
+            match("displayBitmap"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:46:7: ( 'id' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:46:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:47:7: ( 'displayText' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:47:9: 'displayText'
+            {
+            match("displayText"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:48:7: ( 'text' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:48:9: 'text'
+            {
+            match("text"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:49:7: ( 'type' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:49:9: 'type'
+            {
+            match("type"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:50:7: ( 'displayTextAt' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:50:9: 'displayTextAt'
+            {
+            match("displayTextAt"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:51:7: ( 'interCharacterWait' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:51:9: 'interCharacterWait'
+            {
+            match("interCharacterWait"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:52:7: ( 'marqueeFormat' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:52:9: 'marqueeFormat'
+            {
+            match("marqueeFormat"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:53:7: ( 'marqueeRepeatWait' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:53:9: 'marqueeRepeatWait'
+            {
+            match("marqueeRepeatWait"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:54:7: ( 'marqueeType' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:54:9: 'marqueeType'
+            {
+            match("marqueeType"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:55:7: ( 'marqueeUnitWait' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:55:9: 'marqueeUnitWait'
+            {
+            match("marqueeUnitWait"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:56:7: ( 'scroll' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:56:9: 'scroll'
+            {
+            match("scroll"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:57:7: ( 'openDrawer' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:57:9: 'openDrawer'
+            {
+            match("openDrawer"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:58:7: ( 'printBarcode' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:58:9: 'printBarcode'
+            {
+            match("printBarcode"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:59:7: ( 'data' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:59:9: 'data'
+            {
+            match("data"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:60:7: ( 'barcodeType' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:60:9: 'barcodeType'
+            {
+            match("barcodeType"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:61:7: ( 'printBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:61:9: 'printBitmap'
+            {
+            match("printBitmap"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:62:7: ( 'printCut' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:62:9: 'printCut'
+            {
+            match("printCut"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:63:7: ( 'printNormal' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:63:9: 'printNormal'
+            {
+            match("printNormal"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:64:7: ( 'registerBitmap' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:64:9: 'registerBitmap'
+            {
+            match("registerBitmap"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:65:7: ( 'name' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:65:9: 'name'
+            {
+            match("name"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:66:7: ( 'paymentOpen' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:66:9: 'paymentOpen'
+            {
+            match("paymentOpen"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:67:7: ( 'host' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:67:9: 'host'
+            {
+            match("host"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:68:7: ( 'port' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:68:9: 'port'
+            {
+            match("port"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:69:7: ( 'paymentClose' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:69:9: 'paymentClose'
+            {
+            match("paymentClose"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:70:7: ( 'paymentAcknowledge' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:70:9: 'paymentAcknowledge'
+            {
+            match("paymentAcknowledge"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:71:7: ( 'paymentReversal' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:71:9: 'paymentReversal'
+            {
+            match("paymentReversal"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:72:7: ( 'withPassword' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:72:9: 'withPassword'
+            {
+            match("withPassword"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:73:7: ( 'ofReceipt' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:73:9: 'ofReceipt'
+            {
+            match("ofReceipt"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:74:7: ( 'paymentRegistration' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:74:9: 'paymentRegistration'
+            {
+            match("paymentRegistration"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:75:7: ( 'configuration' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:75:9: 'configuration'
+            {
+            match("configuration"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:76:7: ( 'paymentAuthorization' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:76:9: 'paymentAuthorization'
+            {
+            match("paymentAuthorization"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:77:7: ( 'ofAmount' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:77:9: 'ofAmount'
+            {
+            match("ofAmount"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:78:7: ( 'paymentResponse' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:78:9: 'paymentResponse'
+            {
+            match("paymentResponse"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:79:7: ( 'from' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:79:9: 'from'
+            {
+            match("from"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:80:7: ( 'printReport' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:80:9: 'printReport'
+            {
+            match("printReport"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:81:7: ( 'operation' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:81:9: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:82:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:83:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:84:7: ( 'guard' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:84:9: 'guard'
+            {
+            match("guard"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:85:7: ( 'onFail' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:85:9: 'onFail'
+            {
+            match("onFail"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:86:7: ( 'caption' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:86:9: 'caption'
+            {
+            match("caption"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:87:7: ( 'description' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:87:9: 'description'
+            {
+            match("description"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:88:7: ( 'function' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:88:9: 'function'
+            {
+            match("function"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:89:7: ( 'store' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:89:9: 'store'
+            {
+            match("store"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:90:7: ( 'with' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:90:9: 'with'
+            {
+            match("with"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:91:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:92:7: ( 'retrieve' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:92:9: 'retrieve'
+            {
+            match("retrieve"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:93:7: ( 'translate' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:93:9: 'translate'
+            {
+            match("translate"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:94:7: ( 'dto' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:94:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:95:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:96:7: ( 'get' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:96:9: 'get'
+            {
+            match("get"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:97:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:98:8: ( 'set' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:98:10: 'set'
+            {
+            match("set"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:99:8: ( 'clear' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:99:10: 'clear'
+            {
+            match("clear"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:100:8: ( 'remove' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:100:10: 'remove'
+            {
+            match("remove"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:101:8: ( 'visible' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:101:10: 'visible'
+            {
+            match("visible"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:102:8: ( 'invisible' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:102:10: 'invisible'
+            {
+            match("invisible"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:103:8: ( 'image' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:103:10: 'image'
+            {
+            match("image"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:104:8: ( 'search' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:104:10: 'search'
+            {
+            match("search"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:105:8: ( 'in' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:105:10: 'in'
+            {
+            match("in"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:106:8: ( 'schedule' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:106:10: 'schedule'
+            {
+            match("schedule"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:107:8: ( 'keypad' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:107:10: 'keypad'
+            {
+            match("keypad"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:108:8: ( 'fields' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:108:10: 'fields'
+            {
+            match("fields"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:109:8: ( 'dataProvider' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:109:10: 'dataProvider'
+            {
+            match("dataProvider"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:110:8: ( 'scheduler' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:110:10: 'scheduler'
+            {
+            match("scheduler"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:111:8: ( 'lineDisplay' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:111:10: 'lineDisplay'
+            {
+            match("lineDisplay"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:112:8: ( 'posPrinter' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:112:10: 'posPrinter'
+            {
+            match("posPrinter"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:113:8: ( 'cashDrawer' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:113:10: 'cashDrawer'
+            {
+            match("cashDrawer"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:114:8: ( 'payment' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:114:10: 'payment'
+            {
+            match("payment"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:115:8: ( 'peripheral' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:115:10: 'peripheral'
+            {
+            match("peripheral"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:116:8: ( 'button' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:116:10: 'button'
+            {
+            match("button"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:117:8: ( 'key' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:117:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:118:8: ( 'field' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:118:10: 'field'
+            {
+            match("field"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:119:8: ( 'layout' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:119:10: 'layout'
+            {
+            match("layout"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:8: ( 'delay' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:10: 'delay'
+            {
+            match("delay"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:121:8: ( 'send' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:121:10: 'send'
+            {
+            match("send"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:122:8: ( 'import' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:122:10: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:123:8: ( '*' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:123:10: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:124:8: ( '-' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:124:10: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:125:8: ( '=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:125:10: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:126:8: ( '#' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:126:10: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:127:8: ( '[' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:127:10: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:128:8: ( ']' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:128:10: ']'
+            {
+            match(']'); 
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:129:8: ( '+=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:129:10: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:130:8: ( '-=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:131:8: ( '*=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:132:8: ( '/=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:132:10: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:133:8: ( '%=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:133:10: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:134:8: ( '<' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:134:10: '<'
+            {
+            match('<'); 
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:135:8: ( '>' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:135:10: '>'
+            {
+            match('>'); 
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:136:8: ( '>=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:136:10: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:137:8: ( '||' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:137:10: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:138:8: ( '&&' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:138:10: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:139:8: ( '==' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:139:10: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:140:8: ( '!=' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:140:10: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:141:8: ( '===' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:141:10: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:142:8: ( '!==' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:142:10: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:143:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:143:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:144:8: ( '->' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:144:10: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:145:8: ( '..<' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:145:10: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:146:8: ( '..' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:147:8: ( '=>' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:148:8: ( '<>' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:149:8: ( '?:' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:149:10: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:150:8: ( '**' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:150:10: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:151:8: ( '/' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:151:10: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:152:8: ( '%' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:152:10: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "T__155"
+    public final void mT__155() throws RecognitionException {
+        try {
+            int _type = T__155;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:153:8: ( '!' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:153:10: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "T__156"
+    public final void mT__156() throws RecognitionException {
+        try {
+            int _type = T__156;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:154:8: ( 'as' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:154:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__156"
+
+    // $ANTLR start "T__157"
+    public final void mT__157() throws RecognitionException {
+        try {
+            int _type = T__157;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:155:8: ( '++' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:155:10: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__157"
+
+    // $ANTLR start "T__158"
+    public final void mT__158() throws RecognitionException {
+        try {
+            int _type = T__158;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:156:8: ( '--' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:156:10: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__158"
+
+    // $ANTLR start "T__159"
+    public final void mT__159() throws RecognitionException {
+        try {
+            int _type = T__159;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:157:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:157:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__159"
+
+    // $ANTLR start "T__160"
+    public final void mT__160() throws RecognitionException {
+        try {
+            int _type = T__160;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:158:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:158:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__160"
+
+    // $ANTLR start "T__161"
+    public final void mT__161() throws RecognitionException {
+        try {
+            int _type = T__161;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:159:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:159:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "T__162"
+    public final void mT__162() throws RecognitionException {
+        try {
+            int _type = T__162;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:160:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:160:10: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__162"
+
+    // $ANTLR start "T__163"
+    public final void mT__163() throws RecognitionException {
+        try {
+            int _type = T__163;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:161:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:161:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__163"
+
+    // $ANTLR start "T__164"
+    public final void mT__164() throws RecognitionException {
+        try {
+            int _type = T__164;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:162:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:162:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__164"
+
+    // $ANTLR start "T__165"
+    public final void mT__165() throws RecognitionException {
+        try {
+            int _type = T__165;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:163:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:163:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__165"
+
+    // $ANTLR start "T__166"
+    public final void mT__166() throws RecognitionException {
+        try {
+            int _type = T__166;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:164:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:164:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__166"
+
+    // $ANTLR start "T__167"
+    public final void mT__167() throws RecognitionException {
+        try {
+            int _type = T__167;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:165:8: ( 'default' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:165:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__167"
+
+    // $ANTLR start "T__168"
+    public final void mT__168() throws RecognitionException {
+        try {
+            int _type = T__168;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:166:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:166:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__168"
+
+    // $ANTLR start "T__169"
+    public final void mT__169() throws RecognitionException {
+        try {
+            int _type = T__169;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:167:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:167:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__169"
+
+    // $ANTLR start "T__170"
+    public final void mT__170() throws RecognitionException {
+        try {
+            int _type = T__170;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:168:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:168:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__170"
+
+    // $ANTLR start "T__171"
+    public final void mT__171() throws RecognitionException {
+        try {
+            int _type = T__171;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:169:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:169:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "T__172"
+    public final void mT__172() throws RecognitionException {
+        try {
+            int _type = T__172;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:170:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:170:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__172"
+
+    // $ANTLR start "T__173"
+    public final void mT__173() throws RecognitionException {
+        try {
+            int _type = T__173;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:171:8: ( 'val' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:171:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__173"
+
+    // $ANTLR start "T__174"
+    public final void mT__174() throws RecognitionException {
+        try {
+            int _type = T__174;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:172:8: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:172:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__174"
+
+    // $ANTLR start "T__175"
+    public final void mT__175() throws RecognitionException {
+        try {
+            int _type = T__175;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:173:8: ( 'static' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:173:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__175"
+
+    // $ANTLR start "T__176"
+    public final void mT__176() throws RecognitionException {
+        try {
+            int _type = T__176;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:174:8: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:174:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__176"
+
+    // $ANTLR start "T__177"
+    public final void mT__177() throws RecognitionException {
+        try {
+            int _type = T__177;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:175:8: ( 'super' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:175:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__177"
+
+    // $ANTLR start "T__178"
+    public final void mT__178() throws RecognitionException {
+        try {
+            int _type = T__178;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:176:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:176:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__178"
+
+    // $ANTLR start "T__179"
+    public final void mT__179() throws RecognitionException {
+        try {
+            int _type = T__179;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:177:8: ( 'false' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:177:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__179"
+
+    // $ANTLR start "T__180"
+    public final void mT__180() throws RecognitionException {
+        try {
+            int _type = T__180;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:178:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:178:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__180"
+
+    // $ANTLR start "T__181"
+    public final void mT__181() throws RecognitionException {
+        try {
+            int _type = T__181;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:179:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:179:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__181"
+
+    // $ANTLR start "T__182"
+    public final void mT__182() throws RecognitionException {
+        try {
+            int _type = T__182;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:180:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:180:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__182"
+
+    // $ANTLR start "T__183"
+    public final void mT__183() throws RecognitionException {
+        try {
+            int _type = T__183;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:181:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:181:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__183"
+
+    // $ANTLR start "T__184"
+    public final void mT__184() throws RecognitionException {
+        try {
+            int _type = T__184;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:182:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:182:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__184"
+
+    // $ANTLR start "T__185"
+    public final void mT__185() throws RecognitionException {
+        try {
+            int _type = T__185;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:183:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:183:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__185"
+
+    // $ANTLR start "T__186"
+    public final void mT__186() throws RecognitionException {
+        try {
+            int _type = T__186;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:184:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:184:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__186"
+
+    // $ANTLR start "T__187"
+    public final void mT__187() throws RecognitionException {
+        try {
+            int _type = T__187;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:185:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:185:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__187"
+
+    // $ANTLR start "T__188"
+    public final void mT__188() throws RecognitionException {
+        try {
+            int _type = T__188;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:186:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:186:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__188"
+
+    // $ANTLR start "T__189"
+    public final void mT__189() throws RecognitionException {
+        try {
+            int _type = T__189;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:187:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:187:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__189"
+
+    // $ANTLR start "T__190"
+    public final void mT__190() throws RecognitionException {
+        try {
+            int _type = T__190;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:188:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:188:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__190"
+
+    // $ANTLR start "T__191"
+    public final void mT__191() throws RecognitionException {
+        try {
+            int _type = T__191;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:189:8: ( 'Boolean' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:189:10: 'Boolean'
+            {
+            match("Boolean"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__191"
+
+    // $ANTLR start "T__192"
+    public final void mT__192() throws RecognitionException {
+        try {
+            int _type = T__192;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:190:8: ( 'Integer' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:190:10: 'Integer'
+            {
+            match("Integer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__192"
+
+    // $ANTLR start "T__193"
+    public final void mT__193() throws RecognitionException {
+        try {
+            int _type = T__193;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:191:8: ( 'Long' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:191:10: 'Long'
+            {
+            match("Long"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__193"
+
+    // $ANTLR start "T__194"
+    public final void mT__194() throws RecognitionException {
+        try {
+            int _type = T__194;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:192:8: ( 'Double' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:192:10: 'Double'
+            {
+            match("Double"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__194"
+
+    // $ANTLR start "T__195"
+    public final void mT__195() throws RecognitionException {
+        try {
+            int _type = T__195;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:193:8: ( 'String' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:193:10: 'String'
+            {
+            match("String"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__195"
+
+    // $ANTLR start "T__196"
+    public final void mT__196() throws RecognitionException {
+        try {
+            int _type = T__196;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:194:8: ( 'Date' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:194:10: 'Date'
+            {
+            match("Date"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__196"
+
+    // $ANTLR start "T__197"
+    public final void mT__197() throws RecognitionException {
+        try {
+            int _type = T__197;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:195:8: ( 'SuggestText' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:195:10: 'SuggestText'
+            {
+            match("SuggestText"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__197"
+
+    // $ANTLR start "T__198"
+    public final void mT__198() throws RecognitionException {
+        try {
+            int _type = T__198;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:196:8: ( 'keyboard' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:196:10: 'keyboard'
+            {
+            match("keyboard"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__198"
+
+    // $ANTLR start "T__199"
+    public final void mT__199() throws RecognitionException {
+        try {
+            int _type = T__199;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:197:8: ( 'getIPAddress' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:197:10: 'getIPAddress'
+            {
+            match("getIPAddress"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__199"
+
+    // $ANTLR start "T__200"
+    public final void mT__200() throws RecognitionException {
+        try {
+            int _type = T__200;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:198:8: ( 'getNow' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:198:10: 'getNow'
+            {
+            match("getNow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__200"
+
+    // $ANTLR start "T__201"
+    public final void mT__201() throws RecognitionException {
+        try {
+            int _type = T__201;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:199:8: ( 'getUserAgentInfo' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:199:10: 'getUserAgentInfo'
+            {
+            match("getUserAgentInfo"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__201"
+
+    // $ANTLR start "T__202"
+    public final void mT__202() throws RecognitionException {
+        try {
+            int _type = T__202;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:200:8: ( 'isTouchDevice' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:200:10: 'isTouchDevice'
+            {
+            match("isTouchDevice"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__202"
+
+    // $ANTLR start "T__203"
+    public final void mT__203() throws RecognitionException {
+        try {
+            int _type = T__203;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:201:8: ( 'isHttps' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:201:10: 'isHttps'
+            {
+            match("isHttps"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__203"
+
+    // $ANTLR start "T__204"
+    public final void mT__204() throws RecognitionException {
+        try {
+            int _type = T__204;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:202:8: ( 'getBrowserLocale' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:202:10: 'getBrowserLocale'
+            {
+            match("getBrowserLocale"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__204"
+
+    // $ANTLR start "T__205"
+    public final void mT__205() throws RecognitionException {
+        try {
+            int _type = T__205;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:203:8: ( 'getUserName' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:203:10: 'getUserName'
+            {
+            match("getUserName"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__205"
+
+    // $ANTLR start "T__206"
+    public final void mT__206() throws RecognitionException {
+        try {
+            int _type = T__206;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:204:8: ( 'getUserPassword' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:204:10: 'getUserPassword'
+            {
+            match("getUserPassword"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__206"
+
+    // $ANTLR start "T__207"
+    public final void mT__207() throws RecognitionException {
+        try {
+            int _type = T__207;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:205:8: ( 'getUserEmail' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:205:10: 'getUserEmail'
+            {
+            match("getUserEmail"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__207"
+
+    // $ANTLR start "T__208"
+    public final void mT__208() throws RecognitionException {
+        try {
+            int _type = T__208;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:206:8: ( 'getUserPosition' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:206:10: 'getUserPosition'
+            {
+            match("getUserPosition"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__208"
+
+    // $ANTLR start "T__209"
+    public final void mT__209() throws RecognitionException {
+        try {
+            int _type = T__209;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:207:8: ( 'getUserPrintService' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:207:10: 'getUserPrintService'
+            {
+            match("getUserPrintService"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__209"
+
+    // $ANTLR start "T__210"
+    public final void mT__210() throws RecognitionException {
+        try {
+            int _type = T__210;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:208:8: ( 'getSceenWidth' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:208:10: 'getSceenWidth'
+            {
+            match("getSceenWidth"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__210"
+
+    // $ANTLR start "T__211"
+    public final void mT__211() throws RecognitionException {
+        try {
+            int _type = T__211;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:209:8: ( 'getScreenHeight' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:209:10: 'getScreenHeight'
+            {
+            match("getScreenHeight"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__211"
+
+    // $ANTLR start "T__212"
+    public final void mT__212() throws RecognitionException {
+        try {
+            int _type = T__212;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:210:8: ( 'getTrigger' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:210:10: 'getTrigger'
+            {
+            match("getTrigger"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__212"
+
+    // $ANTLR start "T__213"
+    public final void mT__213() throws RecognitionException {
+        try {
+            int _type = T__213;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:211:8: ( 'humanized' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:211:10: 'humanized'
+            {
+            match("humanized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__213"
+
+    // $ANTLR start "T__214"
+    public final void mT__214() throws RecognitionException {
+        try {
+            int _type = T__214;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:212:8: ( 'warning' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:212:10: 'warning'
+            {
+            match("warning"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__214"
+
+    // $ANTLR start "T__215"
+    public final void mT__215() throws RecognitionException {
+        try {
+            int _type = T__215;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:213:8: ( 'error' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:213:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__215"
+
+    // $ANTLR start "T__216"
+    public final void mT__216() throws RecognitionException {
+        try {
+            int _type = T__216;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:214:8: ( 'tray' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:214:10: 'tray'
+            {
+            match("tray"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__216"
+
+    // $ANTLR start "T__217"
+    public final void mT__217() throws RecognitionException {
+        try {
+            int _type = T__217;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:215:8: ( 'assistive' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:215:10: 'assistive'
+            {
+            match("assistive"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__217"
+
+    // $ANTLR start "T__218"
+    public final void mT__218() throws RecognitionException {
+        try {
+            int _type = T__218;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:216:8: ( 'none' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:216:10: 'none'
+            {
+            match("none"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__218"
+
+    // $ANTLR start "T__219"
+    public final void mT__219() throws RecognitionException {
+        try {
+            int _type = T__219;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:217:8: ( 'fixed' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:217:10: 'fixed'
+            {
+            match("fixed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__219"
+
+    // $ANTLR start "T__220"
+    public final void mT__220() throws RecognitionException {
+        try {
+            int _type = T__220;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:218:8: ( 'block' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:218:10: 'block'
+            {
+            match("block"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__220"
+
+    // $ANTLR start "T__221"
+    public final void mT__221() throws RecognitionException {
+        try {
+            int _type = T__221;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:219:8: ( 'halfblock' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:219:10: 'halfblock'
+            {
+            match("halfblock"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__221"
+
+    // $ANTLR start "T__222"
+    public final void mT__222() throws RecognitionException {
+        try {
+            int _type = T__222;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:220:8: ( 'underline' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:220:10: 'underline'
+            {
+            match("underline"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__222"
+
+    // $ANTLR start "T__223"
+    public final void mT__223() throws RecognitionException {
+        try {
+            int _type = T__223;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:221:8: ( 'reverse' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:221:10: 'reverse'
+            {
+            match("reverse"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__223"
+
+    // $ANTLR start "T__224"
+    public final void mT__224() throws RecognitionException {
+        try {
+            int _type = T__224;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:222:8: ( 'other' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:222:10: 'other'
+            {
+            match("other"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__224"
+
+    // $ANTLR start "T__225"
+    public final void mT__225() throws RecognitionException {
+        try {
+            int _type = T__225;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:223:8: ( 'blink' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:223:10: 'blink'
+            {
+            match("blink"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__225"
+
+    // $ANTLR start "T__226"
+    public final void mT__226() throws RecognitionException {
+        try {
+            int _type = T__226;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:224:8: ( 'up' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:224:10: 'up'
+            {
+            match("up"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__226"
+
+    // $ANTLR start "T__227"
+    public final void mT__227() throws RecognitionException {
+        try {
+            int _type = T__227;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:225:8: ( 'down' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:225:10: 'down'
+            {
+            match("down"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__227"
+
+    // $ANTLR start "T__228"
+    public final void mT__228() throws RecognitionException {
+        try {
+            int _type = T__228;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:226:8: ( 'left' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:226:10: 'left'
+            {
+            match("left"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__228"
+
+    // $ANTLR start "T__229"
+    public final void mT__229() throws RecognitionException {
+        try {
+            int _type = T__229;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:227:8: ( 'right' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:227:10: 'right'
+            {
+            match("right"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__229"
+
+    // $ANTLR start "T__230"
+    public final void mT__230() throws RecognitionException {
+        try {
+            int _type = T__230;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:228:8: ( 'init' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:228:10: 'init'
+            {
+            match("init"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__230"
+
+    // $ANTLR start "T__231"
+    public final void mT__231() throws RecognitionException {
+        try {
+            int _type = T__231;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:229:8: ( 'walk' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:229:10: 'walk'
+            {
+            match("walk"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__231"
+
+    // $ANTLR start "T__232"
+    public final void mT__232() throws RecognitionException {
+        try {
+            int _type = T__232;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:230:8: ( 'place' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:230:10: 'place'
+            {
+            match("place"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__232"
+
+    // $ANTLR start "T__233"
+    public final void mT__233() throws RecognitionException {
+        try {
+            int _type = T__233;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:231:8: ( 'normal' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:231:10: 'normal'
+            {
+            match("normal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__233"
+
+    // $ANTLR start "T__234"
+    public final void mT__234() throws RecognitionException {
+        try {
+            int _type = T__234;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:232:8: ( 'blinkreverse' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:232:10: 'blinkreverse'
+            {
+            match("blinkreverse"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__234"
+
+    // $ANTLR start "T__235"
+    public final void mT__235() throws RecognitionException {
+        try {
+            int _type = T__235;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:233:8: ( 'upca' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:233:10: 'upca'
+            {
+            match("upca"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__235"
+
+    // $ANTLR start "T__236"
+    public final void mT__236() throws RecognitionException {
+        try {
+            int _type = T__236;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:234:8: ( 'upcb' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:234:10: 'upcb'
+            {
+            match("upcb"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__236"
+
+    // $ANTLR start "T__237"
+    public final void mT__237() throws RecognitionException {
+        try {
+            int _type = T__237;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:235:8: ( 'jan8' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:235:10: 'jan8'
+            {
+            match("jan8"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__237"
+
+    // $ANTLR start "T__238"
+    public final void mT__238() throws RecognitionException {
+        try {
+            int _type = T__238;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:236:8: ( 'ean8' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:236:10: 'ean8'
+            {
+            match("ean8"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__238"
+
+    // $ANTLR start "T__239"
+    public final void mT__239() throws RecognitionException {
+        try {
+            int _type = T__239;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:237:8: ( 'jan13' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:237:10: 'jan13'
+            {
+            match("jan13"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__239"
+
+    // $ANTLR start "T__240"
+    public final void mT__240() throws RecognitionException {
+        try {
+            int _type = T__240;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:238:8: ( 'ean13' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:238:10: 'ean13'
+            {
+            match("ean13"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__240"
+
+    // $ANTLR start "T__241"
+    public final void mT__241() throws RecognitionException {
+        try {
+            int _type = T__241;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:239:8: ( 'tf' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:239:10: 'tf'
+            {
+            match("tf"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__241"
+
+    // $ANTLR start "T__242"
+    public final void mT__242() throws RecognitionException {
+        try {
+            int _type = T__242;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:240:8: ( 'itf' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:240:10: 'itf'
+            {
+            match("itf"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__242"
+
+    // $ANTLR start "T__243"
+    public final void mT__243() throws RecognitionException {
+        try {
+            int _type = T__243;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:241:8: ( 'codeabar' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:241:10: 'codeabar'
+            {
+            match("codeabar"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__243"
+
+    // $ANTLR start "T__244"
+    public final void mT__244() throws RecognitionException {
+        try {
+            int _type = T__244;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:242:8: ( 'code39' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:242:10: 'code39'
+            {
+            match("code39"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__244"
+
+    // $ANTLR start "T__245"
+    public final void mT__245() throws RecognitionException {
+        try {
+            int _type = T__245;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:243:8: ( 'code93' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:243:10: 'code93'
+            {
+            match("code93"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__245"
+
+    // $ANTLR start "T__246"
+    public final void mT__246() throws RecognitionException {
+        try {
+            int _type = T__246;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:244:8: ( 'code128' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:244:10: 'code128'
+            {
+            match("code128"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__246"
+
+    // $ANTLR start "T__247"
+    public final void mT__247() throws RecognitionException {
+        try {
+            int _type = T__247;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:245:8: ( 'upca_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:245:10: 'upca_s'
+            {
+            match("upca_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__247"
+
+    // $ANTLR start "T__248"
+    public final void mT__248() throws RecognitionException {
+        try {
+            int _type = T__248;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:246:8: ( 'upce_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:246:10: 'upce_s'
+            {
+            match("upce_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__248"
+
+    // $ANTLR start "T__249"
+    public final void mT__249() throws RecognitionException {
+        try {
+            int _type = T__249;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:247:8: ( 'upcd1' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:247:10: 'upcd1'
+            {
+            match("upcd1"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__249"
+
+    // $ANTLR start "T__250"
+    public final void mT__250() throws RecognitionException {
+        try {
+            int _type = T__250;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:248:8: ( 'upcd2' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:248:10: 'upcd2'
+            {
+            match("upcd2"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__250"
+
+    // $ANTLR start "T__251"
+    public final void mT__251() throws RecognitionException {
+        try {
+            int _type = T__251;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:249:8: ( 'upcd3' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:249:10: 'upcd3'
+            {
+            match("upcd3"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__251"
+
+    // $ANTLR start "T__252"
+    public final void mT__252() throws RecognitionException {
+        try {
+            int _type = T__252;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:250:8: ( 'upcd4' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:250:10: 'upcd4'
+            {
+            match("upcd4"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__252"
+
+    // $ANTLR start "T__253"
+    public final void mT__253() throws RecognitionException {
+        try {
+            int _type = T__253;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:251:8: ( 'upcd5' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:251:10: 'upcd5'
+            {
+            match("upcd5"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__253"
+
+    // $ANTLR start "T__254"
+    public final void mT__254() throws RecognitionException {
+        try {
+            int _type = T__254;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:252:8: ( 'ean8_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:252:10: 'ean8_s'
+            {
+            match("ean8_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__254"
+
+    // $ANTLR start "T__255"
+    public final void mT__255() throws RecognitionException {
+        try {
+            int _type = T__255;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:253:8: ( 'ean13_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:253:10: 'ean13_s'
+            {
+            match("ean13_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__255"
+
+    // $ANTLR start "T__256"
+    public final void mT__256() throws RecognitionException {
+        try {
+            int _type = T__256;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:254:8: ( 'ean128' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:254:10: 'ean128'
+            {
+            match("ean128"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__256"
+
+    // $ANTLR start "T__257"
+    public final void mT__257() throws RecognitionException {
+        try {
+            int _type = T__257;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:255:8: ( 'orca' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:255:10: 'orca'
+            {
+            match("orca"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__257"
+
+    // $ANTLR start "T__258"
+    public final void mT__258() throws RecognitionException {
+        try {
+            int _type = T__258;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:256:8: ( 'ocrb' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:256:10: 'ocrb'
+            {
+            match("ocrb"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__258"
+
+    // $ANTLR start "T__259"
+    public final void mT__259() throws RecognitionException {
+        try {
+            int _type = T__259;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:257:8: ( 'code128_parsed' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:257:10: 'code128_parsed'
+            {
+            match("code128_parsed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__259"
+
+    // $ANTLR start "T__260"
+    public final void mT__260() throws RecognitionException {
+        try {
+            int _type = T__260;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:258:8: ( 'gs1databar' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:258:10: 'gs1databar'
+            {
+            match("gs1databar"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__260"
+
+    // $ANTLR start "T__261"
+    public final void mT__261() throws RecognitionException {
+        try {
+            int _type = T__261;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:259:8: ( 'gs1databar_e' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:259:10: 'gs1databar_e'
+            {
+            match("gs1databar_e"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__261"
+
+    // $ANTLR start "T__262"
+    public final void mT__262() throws RecognitionException {
+        try {
+            int _type = T__262;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:260:8: ( 'gs1databar_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:260:10: 'gs1databar_s'
+            {
+            match("gs1databar_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__262"
+
+    // $ANTLR start "T__263"
+    public final void mT__263() throws RecognitionException {
+        try {
+            int _type = T__263;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:261:8: ( 'gs1databar_e_s' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:261:10: 'gs1databar_e_s'
+            {
+            match("gs1databar_e_s"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__263"
+
+    // $ANTLR start "T__264"
+    public final void mT__264() throws RecognitionException {
+        try {
+            int _type = T__264;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:262:8: ( 'pdf417' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:262:10: 'pdf417'
+            {
+            match("pdf417"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__264"
+
+    // $ANTLR start "T__265"
+    public final void mT__265() throws RecognitionException {
+        try {
+            int _type = T__265;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:263:8: ( 'maxicode' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:263:10: 'maxicode'
+            {
+            match("maxicode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__265"
+
+    // $ANTLR start "T__266"
+    public final void mT__266() throws RecognitionException {
+        try {
+            int _type = T__266;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:264:8: ( 'datamatrix' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:264:10: 'datamatrix'
+            {
+            match("datamatrix"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__266"
+
+    // $ANTLR start "T__267"
+    public final void mT__267() throws RecognitionException {
+        try {
+            int _type = T__267;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:265:8: ( 'qrcode' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:265:10: 'qrcode'
+            {
+            match("qrcode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__267"
+
+    // $ANTLR start "T__268"
+    public final void mT__268() throws RecognitionException {
+        try {
+            int _type = T__268;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:266:8: ( 'uqrcode' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:266:10: 'uqrcode'
+            {
+            match("uqrcode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__268"
+
+    // $ANTLR start "T__269"
+    public final void mT__269() throws RecognitionException {
+        try {
+            int _type = T__269;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:267:8: ( 'aztec' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:267:10: 'aztec'
+            {
+            match("aztec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__269"
+
+    // $ANTLR start "T__270"
+    public final void mT__270() throws RecognitionException {
+        try {
+            int _type = T__270;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:268:8: ( 'updf417' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:268:10: 'updf417'
+            {
+            match("updf417"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__270"
+
+    // $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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13889: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13891:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13891:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13891: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13893: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13895:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13895:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13895:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13895: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13895: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13897: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13899:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13899:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13899: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13899: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13901: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13903:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13903:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13903: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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13905:16: ( . )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:13905:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | T__216 | T__217 | T__218 | T__219 | T__220 | T__221 | T__222 | T__223 | T__224 | T__225 | T__226 | T__227 | T__228 | T__229 | T__230 | T__231 | T__232 | T__233 | T__234 | T__235 | T__236 | T__237 | T__238 | T__239 | T__240 | T__241 | T__242 | T__243 | T__244 | T__245 | T__246 | T__247 | T__248 | T__249 | T__250 | T__251 | T__252 | T__253 | T__254 | T__255 | T__256 | T__257 | T__258 | T__259 | T__260 | T__261 | T__262 | T__263 | T__264 | T__265 | T__266 | T__267 | T__268 | T__269 | T__270 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=267;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1036: T__172
+                {
+                mT__172(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1043: T__173
+                {
+                mT__173(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1050: T__174
+                {
+                mT__174(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1057: T__175
+                {
+                mT__175(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1064: T__176
+                {
+                mT__176(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1071: T__177
+                {
+                mT__177(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1078: T__178
+                {
+                mT__178(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1085: T__179
+                {
+                mT__179(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1092: T__180
+                {
+                mT__180(); 
+
+                }
+                break;
+            case 169 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1099: T__181
+                {
+                mT__181(); 
+
+                }
+                break;
+            case 170 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1106: T__182
+                {
+                mT__182(); 
+
+                }
+                break;
+            case 171 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1113: T__183
+                {
+                mT__183(); 
+
+                }
+                break;
+            case 172 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1120: T__184
+                {
+                mT__184(); 
+
+                }
+                break;
+            case 173 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1127: T__185
+                {
+                mT__185(); 
+
+                }
+                break;
+            case 174 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1134: T__186
+                {
+                mT__186(); 
+
+                }
+                break;
+            case 175 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1141: T__187
+                {
+                mT__187(); 
+
+                }
+                break;
+            case 176 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1148: T__188
+                {
+                mT__188(); 
+
+                }
+                break;
+            case 177 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1155: T__189
+                {
+                mT__189(); 
+
+                }
+                break;
+            case 178 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1162: T__190
+                {
+                mT__190(); 
+
+                }
+                break;
+            case 179 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1169: T__191
+                {
+                mT__191(); 
+
+                }
+                break;
+            case 180 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1176: T__192
+                {
+                mT__192(); 
+
+                }
+                break;
+            case 181 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1183: T__193
+                {
+                mT__193(); 
+
+                }
+                break;
+            case 182 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1190: T__194
+                {
+                mT__194(); 
+
+                }
+                break;
+            case 183 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1197: T__195
+                {
+                mT__195(); 
+
+                }
+                break;
+            case 184 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1204: T__196
+                {
+                mT__196(); 
+
+                }
+                break;
+            case 185 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1211: T__197
+                {
+                mT__197(); 
+
+                }
+                break;
+            case 186 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1218: T__198
+                {
+                mT__198(); 
+
+                }
+                break;
+            case 187 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1225: T__199
+                {
+                mT__199(); 
+
+                }
+                break;
+            case 188 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1232: T__200
+                {
+                mT__200(); 
+
+                }
+                break;
+            case 189 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1239: T__201
+                {
+                mT__201(); 
+
+                }
+                break;
+            case 190 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1246: T__202
+                {
+                mT__202(); 
+
+                }
+                break;
+            case 191 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1253: T__203
+                {
+                mT__203(); 
+
+                }
+                break;
+            case 192 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1260: T__204
+                {
+                mT__204(); 
+
+                }
+                break;
+            case 193 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1267: T__205
+                {
+                mT__205(); 
+
+                }
+                break;
+            case 194 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1274: T__206
+                {
+                mT__206(); 
+
+                }
+                break;
+            case 195 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1281: T__207
+                {
+                mT__207(); 
+
+                }
+                break;
+            case 196 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1288: T__208
+                {
+                mT__208(); 
+
+                }
+                break;
+            case 197 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1295: T__209
+                {
+                mT__209(); 
+
+                }
+                break;
+            case 198 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1302: T__210
+                {
+                mT__210(); 
+
+                }
+                break;
+            case 199 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1309: T__211
+                {
+                mT__211(); 
+
+                }
+                break;
+            case 200 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1316: T__212
+                {
+                mT__212(); 
+
+                }
+                break;
+            case 201 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1323: T__213
+                {
+                mT__213(); 
+
+                }
+                break;
+            case 202 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1330: T__214
+                {
+                mT__214(); 
+
+                }
+                break;
+            case 203 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1337: T__215
+                {
+                mT__215(); 
+
+                }
+                break;
+            case 204 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1344: T__216
+                {
+                mT__216(); 
+
+                }
+                break;
+            case 205 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1351: T__217
+                {
+                mT__217(); 
+
+                }
+                break;
+            case 206 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1358: T__218
+                {
+                mT__218(); 
+
+                }
+                break;
+            case 207 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1365: T__219
+                {
+                mT__219(); 
+
+                }
+                break;
+            case 208 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1372: T__220
+                {
+                mT__220(); 
+
+                }
+                break;
+            case 209 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1379: T__221
+                {
+                mT__221(); 
+
+                }
+                break;
+            case 210 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1386: T__222
+                {
+                mT__222(); 
+
+                }
+                break;
+            case 211 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1393: T__223
+                {
+                mT__223(); 
+
+                }
+                break;
+            case 212 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1400: T__224
+                {
+                mT__224(); 
+
+                }
+                break;
+            case 213 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1407: T__225
+                {
+                mT__225(); 
+
+                }
+                break;
+            case 214 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1414: T__226
+                {
+                mT__226(); 
+
+                }
+                break;
+            case 215 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1421: T__227
+                {
+                mT__227(); 
+
+                }
+                break;
+            case 216 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1428: T__228
+                {
+                mT__228(); 
+
+                }
+                break;
+            case 217 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1435: T__229
+                {
+                mT__229(); 
+
+                }
+                break;
+            case 218 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1442: T__230
+                {
+                mT__230(); 
+
+                }
+                break;
+            case 219 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1449: T__231
+                {
+                mT__231(); 
+
+                }
+                break;
+            case 220 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1456: T__232
+                {
+                mT__232(); 
+
+                }
+                break;
+            case 221 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1463: T__233
+                {
+                mT__233(); 
+
+                }
+                break;
+            case 222 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1470: T__234
+                {
+                mT__234(); 
+
+                }
+                break;
+            case 223 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1477: T__235
+                {
+                mT__235(); 
+
+                }
+                break;
+            case 224 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1484: T__236
+                {
+                mT__236(); 
+
+                }
+                break;
+            case 225 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1491: T__237
+                {
+                mT__237(); 
+
+                }
+                break;
+            case 226 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1498: T__238
+                {
+                mT__238(); 
+
+                }
+                break;
+            case 227 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1505: T__239
+                {
+                mT__239(); 
+
+                }
+                break;
+            case 228 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1512: T__240
+                {
+                mT__240(); 
+
+                }
+                break;
+            case 229 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1519: T__241
+                {
+                mT__241(); 
+
+                }
+                break;
+            case 230 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1526: T__242
+                {
+                mT__242(); 
+
+                }
+                break;
+            case 231 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1533: T__243
+                {
+                mT__243(); 
+
+                }
+                break;
+            case 232 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1540: T__244
+                {
+                mT__244(); 
+
+                }
+                break;
+            case 233 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1547: T__245
+                {
+                mT__245(); 
+
+                }
+                break;
+            case 234 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1554: T__246
+                {
+                mT__246(); 
+
+                }
+                break;
+            case 235 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1561: T__247
+                {
+                mT__247(); 
+
+                }
+                break;
+            case 236 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1568: T__248
+                {
+                mT__248(); 
+
+                }
+                break;
+            case 237 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1575: T__249
+                {
+                mT__249(); 
+
+                }
+                break;
+            case 238 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1582: T__250
+                {
+                mT__250(); 
+
+                }
+                break;
+            case 239 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1589: T__251
+                {
+                mT__251(); 
+
+                }
+                break;
+            case 240 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1596: T__252
+                {
+                mT__252(); 
+
+                }
+                break;
+            case 241 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1603: T__253
+                {
+                mT__253(); 
+
+                }
+                break;
+            case 242 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1610: T__254
+                {
+                mT__254(); 
+
+                }
+                break;
+            case 243 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1617: T__255
+                {
+                mT__255(); 
+
+                }
+                break;
+            case 244 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1624: T__256
+                {
+                mT__256(); 
+
+                }
+                break;
+            case 245 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1631: T__257
+                {
+                mT__257(); 
+
+                }
+                break;
+            case 246 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1638: T__258
+                {
+                mT__258(); 
+
+                }
+                break;
+            case 247 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1645: T__259
+                {
+                mT__259(); 
+
+                }
+                break;
+            case 248 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1652: T__260
+                {
+                mT__260(); 
+
+                }
+                break;
+            case 249 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1659: T__261
+                {
+                mT__261(); 
+
+                }
+                break;
+            case 250 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1666: T__262
+                {
+                mT__262(); 
+
+                }
+                break;
+            case 251 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1673: T__263
+                {
+                mT__263(); 
+
+                }
+                break;
+            case 252 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1680: T__264
+                {
+                mT__264(); 
+
+                }
+                break;
+            case 253 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1687: T__265
+                {
+                mT__265(); 
+
+                }
+                break;
+            case 254 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1694: T__266
+                {
+                mT__266(); 
+
+                }
+                break;
+            case 255 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1701: T__267
+                {
+                mT__267(); 
+
+                }
+                break;
+            case 256 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1708: T__268
+                {
+                mT__268(); 
+
+                }
+                break;
+            case 257 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1715: T__269
+                {
+                mT__269(); 
+
+                }
+                break;
+            case 258 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1722: T__270
+                {
+                mT__270(); 
+
+                }
+                break;
+            case 259 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1729: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 260 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1738: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 261 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1747: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 262 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1760: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 263 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1768: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 264 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1780: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 265 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1796: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 266 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1812: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 267 :
+                // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1:1820: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\103\2\uffff\10\103\1\uffff\11\103\2\uffff\1\u008f\1"+
+        "\u0092\1\uffff\2\103\1\u009b\1\u009f\1\u00a2\3\uffff\1\u00a9\1\u00ab"+
+        "\1\u00ad\1\u00af\1\u00b1\1\u00b3\1\u00b5\1\u00b8\1\u00ba\1\uffff"+
+        "\10\103\2\u00ca\1\74\5\uffff\6\103\3\uffff\12\103\1\u00e8\5\103"+
+        "\1\u00f4\1\u00f6\1\103\1\u00f9\20\103\1\u0112\1\103\1\uffff\2\103"+
+        "\1\u0117\34\103\2\uffff\1\u013f\5\uffff\5\103\7\uffff\1\u0147\23"+
+        "\uffff\1\u0149\7\uffff\10\103\1\u0154\3\103\1\uffff\1\u00ca\4\uffff"+
+        "\14\103\1\u0164\13\103\1\u0171\1\103\1\uffff\5\103\1\u0178\5\103"+
+        "\1\uffff\1\103\1\uffff\2\103\1\uffff\2\103\1\u0183\21\103\1\u0199"+
+        "\3\103\1\uffff\1\u01a0\1\u01a1\2\103\1\uffff\2\103\1\u01ac\5\103"+
+        "\1\u01b2\31\103\1\u01ce\3\103\2\uffff\1\103\1\u01d3\1\u01d4\3\103"+
+        "\4\uffff\12\103\1\uffff\6\103\1\u01ec\10\103\1\uffff\1\103\1\u01f7"+
+        "\11\103\1\u0203\1\uffff\1\u0204\1\103\1\u0206\3\103\1\uffff\1\103"+
+        "\1\u020c\10\103\1\uffff\1\103\1\u0216\2\103\1\u021a\12\103\1\u0229"+
+        "\3\103\1\u022d\1\u022e\1\uffff\1\u022f\1\u0231\4\103\2\uffff\12"+
+        "\103\1\uffff\5\103\1\uffff\7\103\1\u024c\4\103\1\u0252\2\103\1\u0255"+
+        "\10\103\1\u025e\1\u025f\1\u0260\1\uffff\1\u0261\1\u0262\2\103\2"+
+        "\uffff\2\103\1\u0267\2\103\1\u026a\1\103\1\u026c\3\103\1\u0271\1"+
+        "\u0272\4\103\1\u027b\5\103\1\uffff\2\103\1\u0286\1\103\1\u028a\1"+
+        "\103\1\u028c\3\103\1\uffff\1\103\1\u0291\4\103\1\u0296\4\103\2\uffff"+
+        "\1\103\1\uffff\1\u029d\1\103\1\u029f\1\u02a0\1\103\1\uffff\4\103"+
+        "\1\u02a6\3\103\1\u02ab\1\uffff\1\103\1\u02ae\1\103\1\uffff\1\u02b1"+
+        "\10\103\1\u02bb\4\103\1\uffff\1\u02c0\2\103\3\uffff\1\103\1\uffff"+
+        "\1\u02c5\5\103\1\u02cb\1\u02cd\7\103\1\u02d8\1\u02d9\7\103\1\u02e1"+
+        "\1\103\1\uffff\2\103\1\u02e5\2\103\1\uffff\1\u02e8\1\103\1\uffff"+
+        "\7\103\1\u02f1\5\uffff\4\103\1\uffff\2\103\1\uffff\1\103\1\uffff"+
+        "\4\103\2\uffff\1\103\1\u02fe\1\u02ff\1\u0300\1\u0301\1\u0302\2\103"+
+        "\1\uffff\1\u0305\11\103\1\uffff\1\u0310\1\103\1\u0312\1\uffff\1"+
+        "\u0313\1\uffff\1\u0314\1\103\1\u0316\1\u0317\1\uffff\4\103\1\uffff"+
+        "\5\103\1\u0322\1\uffff\1\103\2\uffff\5\103\1\uffff\1\u0329\2\103"+
+        "\1\u032c\1\uffff\2\103\1\uffff\1\u032f\1\103\1\uffff\1\u0331\2\103"+
+        "\1\u0334\1\103\1\u0336\1\u0337\2\103\1\uffff\4\103\1\uffff\3\103"+
+        "\1\u0341\1\uffff\1\103\1\u0343\3\103\1\uffff\1\u0347\1\uffff\1\103"+
+        "\1\u0349\10\103\2\uffff\1\103\1\u0353\2\103\1\u0356\1\u0357\1\103"+
+        "\1\uffff\1\u0359\2\103\1\uffff\2\103\1\uffff\7\103\1\u0366\1\uffff"+
+        "\1\u0367\2\103\1\u036a\2\103\1\u036d\1\u036e\2\103\1\u0371\1\u0372"+
+        "\5\uffff\2\103\1\uffff\1\u0375\1\u0376\1\u037b\7\103\1\uffff\1\103"+
+        "\3\uffff\1\103\2\uffff\5\103\1\u038a\4\103\1\uffff\1\u0390\5\103"+
+        "\1\uffff\1\103\1\u0398\1\uffff\1\u0399\1\103\1\uffff\1\u039b\1\uffff"+
+        "\2\103\1\uffff\1\103\2\uffff\1\u03a0\3\103\1\u03a4\1\103\1\u03a7"+
+        "\2\103\1\uffff\1\103\1\uffff\1\103\1\u03ac\1\103\1\uffff\1\103\1"+
+        "\uffff\11\103\1\uffff\2\103\2\uffff\1\u03bd\1\uffff\5\103\1\u03c3"+
+        "\6\103\2\uffff\1\u03cd\1\103\1\uffff\1\u03cf\1\u03d0\2\uffff\2\103"+
+        "\2\uffff\1\u03d3\1\u03d4\2\uffff\4\103\1\uffff\2\103\1\u03dc\5\103"+
+        "\1\u03e3\5\103\1\uffff\4\103\1\u03ee\1\uffff\5\103\1\u03f4\1\103"+
+        "\2\uffff\1\103\1\uffff\1\u03f7\1\103\1\u03f9\1\103\1\uffff\3\103"+
+        "\1\uffff\1\103\1\u03ff\1\uffff\3\103\1\u0403\1\uffff\17\103\1\u0415"+
+        "\1\uffff\5\103\1\uffff\4\103\1\u041f\3\103\1\u0423\1\uffff\1\103"+
+        "\2\uffff\2\103\2\uffff\7\103\1\uffff\5\103\1\u0435\1\uffff\12\103"+
+        "\1\uffff\3\103\1\u0443\1\103\1\uffff\1\103\1\u0446\1\uffff\1\103"+
+        "\1\uffff\5\103\1\uffff\1\103\1\u044e\1\u044f\1\uffff\1\u0450\14"+
+        "\103\1\u045d\3\103\1\uffff\1\u0461\1\u0462\7\103\1\uffff\1\103\1"+
+        "\u046b\1\u046c\1\uffff\2\103\1\u046f\13\103\1\u047b\1\u047c\1\103"+
+        "\1\uffff\1\103\1\uffff\6\103\1\u0485\4\103\1\uffff\1\u048a\1\103"+
+        "\1\uffff\4\103\1\u0490\1\u0491\1\u0492\3\uffff\12\103\1\u049d\1"+
+        "\u049f\1\uffff\3\103\2\uffff\7\103\1\u04aa\2\uffff\2\103\1\uffff"+
+        "\1\u04ad\7\103\1\u04b5\1\u04b6\1\u04b7\2\uffff\2\103\1\u04ba\3\103"+
+        "\1\u04bf\1\103\1\uffff\4\103\1\uffff\3\103\1\u04c8\1\103\3\uffff"+
+        "\2\103\1\u04cc\7\103\1\uffff\1\103\1\uffff\1\103\1\u04d7\2\103\1"+
+        "\u04da\3\103\1\u04de\1\103\1\uffff\1\u04e0\1\u04e1\1\uffff\1\u04e2"+
+        "\5\103\1\u04e8\3\uffff\1\u04e9\1\u04ea\1\uffff\4\103\1\uffff\1\u04ef"+
+        "\1\103\1\u04f1\1\u04f2\4\103\1\uffff\1\u04f7\1\u04f8\1\103\1\uffff"+
+        "\3\103\1\u04fd\3\103\1\u0502\1\u0503\1\u0504\1\uffff\1\103\1\u0506"+
+        "\1\uffff\1\u0507\2\103\1\uffff\1\103\3\uffff\5\103\3\uffff\1\u0510"+
+        "\1\103\1\u0512\1\u0513\1\uffff\1\u0514\2\uffff\1\103\1\u0516\1\u0517"+
+        "\1\103\2\uffff\4\103\1\uffff\1\103\1\u051e\2\103\3\uffff\1\103\2"+
+        "\uffff\1\u0522\7\103\1\uffff\1\103\3\uffff\1\103\2\uffff\1\u052c"+
+        "\5\103\1\uffff\1\103\1\u0533\1\u0534\1\uffff\4\103\1\u0539\1\103"+
+        "\1\u053b\2\103\1\uffff\1\103\1\u053f\1\u0540\2\103\1\u0543\2\uffff"+
+        "\1\103\1\u0545\2\103\1\uffff\1\103\1\uffff\1\u0549\1\103\1\u054b"+
+        "\2\uffff\1\103\1\u054d\1\uffff\1\103\1\uffff\3\103\1\uffff\1\103"+
+        "\1\uffff\1\103\1\uffff\1\u0554\1\u0555\2\103\1\u0558\1\103\2\uffff"+
+        "\1\103\1\u055b\1\uffff\1\u055c\1\u055d\3\uffff";
+    static final String DFA21_eofS =
+        "\u055e\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\1\143\2\141\1\144\2\141\2\145\1\uffff\1\143"+
+        "\1\145\1\141\1\145\3\141\1\143\1\141\2\uffff\1\56\1\53\1\uffff\2"+
+        "\141\1\52\1\55\1\75\3\uffff\1\52\1\75\1\76\1\75\1\174\1\46\1\75"+
+        "\1\56\1\72\1\uffff\1\157\1\156\1\157\1\141\1\164\1\156\1\141\1\162"+
+        "\2\60\1\44\5\uffff\1\143\1\151\2\162\1\141\1\146\3\uffff\1\141\1"+
+        "\150\1\141\1\151\1\160\1\156\1\146\1\163\1\164\1\157\1\44\1\156"+
+        "\1\157\1\145\1\162\1\154\2\44\1\141\1\44\1\110\1\146\1\145\1\163"+
+        "\1\164\1\162\1\156\1\144\2\145\1\162\1\160\1\141\1\170\1\160\1\162"+
+        "\1\44\1\171\1\uffff\1\144\1\164\1\44\1\164\1\141\1\164\1\61\1\151"+
+        "\1\162\1\164\1\167\2\147\1\151\1\163\1\155\1\154\1\144\1\151\1\154"+
+        "\1\162\1\145\1\101\1\106\1\150\1\143\1\162\1\155\1\167\1\154\1\156"+
+        "\2\uffff\1\74\5\uffff\1\163\1\154\1\156\1\171\1\146\7\uffff\1\75"+
+        "\23\uffff\1\75\7\uffff\1\157\1\164\1\156\1\165\1\164\1\162\1\147"+
+        "\1\144\1\44\1\162\1\156\1\143\1\uffff\1\60\4\uffff\1\153\1\155\1"+
+        "\156\1\164\1\120\1\151\1\143\1\64\1\164\1\162\1\157\1\145\1\44\1"+
+        "\162\1\144\1\164\1\145\2\143\1\151\2\141\1\160\1\141\1\44\1\156"+
+        "\1\uffff\1\143\1\155\1\154\1\141\1\145\1\44\1\163\1\164\1\145\1"+
+        "\151\1\164\1\uffff\1\156\1\uffff\1\147\1\157\1\uffff\1\157\1\164"+
+        "\1\44\1\156\2\145\1\157\1\61\1\146\1\165\1\145\2\141\1\163\1\164"+
+        "\1\145\1\143\1\147\1\156\1\145\1\44\1\164\1\145\1\157\1\uffff\2"+
+        "\44\2\151\1\uffff\1\145\1\162\1\44\1\144\1\156\2\143\1\164\1\44"+
+        "\1\151\1\162\1\157\1\145\1\150\1\147\1\164\1\141\1\146\1\164\1\144"+
+        "\1\150\1\154\1\156\1\153\1\161\1\151\1\156\1\145\1\155\1\141\1\145"+
+        "\1\141\1\142\1\145\1\44\1\154\1\145\1\155\2\uffff\1\151\2\44\1\145"+
+        "\1\157\1\164\4\uffff\1\154\1\145\1\147\1\142\1\145\1\151\1\147\1"+
+        "\145\1\141\1\146\1\uffff\1\143\1\61\1\157\1\141\1\145\1\164\1\44"+
+        "\1\162\1\160\1\145\1\61\2\145\1\154\1\144\1\uffff\1\143\1\44\1\143"+
+        "\1\162\1\150\2\162\1\143\1\171\1\165\1\154\1\44\1\uffff\1\44\1\164"+
+        "\1\44\1\144\1\154\1\144\1\uffff\1\145\1\44\1\162\1\163\1\141\1\164"+
+        "\1\145\1\162\1\165\1\164\1\uffff\1\164\1\44\1\156\1\162\1\44\1\62"+
+        "\1\162\1\151\1\155\1\61\1\162\1\164\1\157\1\151\1\104\1\44\1\150"+
+        "\1\147\1\163\2\44\1\uffff\2\44\1\167\1\164\1\141\1\157\2\uffff\1"+
+        "\157\1\163\1\143\1\144\1\120\1\157\1\163\1\162\1\143\1\162\1\uffff"+
+        "\1\141\2\153\2\157\1\uffff\1\163\1\151\1\162\1\166\1\162\1\164\1"+
+        "\150\1\44\1\156\1\142\1\150\1\157\1\44\1\145\1\151\1\44\1\165\1"+
+        "\143\1\104\1\141\1\143\1\157\1\151\1\162\3\44\1\uffff\2\44\1\141"+
+        "\1\142\2\uffff\1\104\1\165\1\44\1\145\1\147\1\44\1\154\1\44\1\156"+
+        "\1\145\1\162\2\44\1\137\1\61\1\64\1\157\1\44\1\63\1\144\1\147\1"+
+        "\156\1\102\1\uffff\1\151\1\150\1\44\1\67\1\44\1\143\1\44\1\154\1"+
+        "\165\1\150\1\uffff\1\150\1\44\1\162\1\151\1\157\1\145\1\44\1\154"+
+        "\1\141\1\162\1\141\2\uffff\1\151\1\uffff\1\44\1\154\2\44\1\141\1"+
+        "\uffff\1\103\1\151\1\156\1\151\1\44\1\164\1\143\1\160\1\44\1\uffff"+
+        "\1\144\1\44\1\163\1\uffff\1\44\1\70\1\157\1\147\1\156\1\142\1\71"+
+        "\1\63\1\62\1\44\1\145\1\162\1\157\1\162\1\uffff\1\44\1\145\1\151"+
+        "\3\uffff\1\146\1\uffff\1\44\1\162\1\144\1\141\1\156\1\164\2\44\1"+
+        "\101\1\167\1\145\1\157\1\145\1\151\1\164\2\44\1\144\1\156\1\164"+
+        "\1\145\1\156\1\145\1\163\1\44\1\164\1\uffff\1\151\1\154\1\44\1\167"+
+        "\1\141\1\uffff\1\44\1\156\1\uffff\1\145\1\157\1\162\1\164\1\145"+
+        "\1\165\1\154\1\44\5\uffff\2\154\1\151\1\164\1\uffff\1\141\1\145"+
+        "\1\uffff\1\145\1\uffff\1\147\1\163\1\154\1\163\2\uffff\1\163\5\44"+
+        "\1\61\1\144\1\uffff\1\44\2\145\1\164\1\141\1\165\1\157\1\145\1\156"+
+        "\1\145\1\uffff\1\44\1\141\1\44\1\uffff\1\44\1\uffff\1\44\1\154\2"+
+        "\44\1\uffff\1\157\1\142\1\171\1\102\1\uffff\1\164\1\171\1\157\1"+
+        "\164\1\157\1\44\1\uffff\1\171\2\uffff\1\154\1\150\1\142\1\143\1"+
+        "\164\1\uffff\1\44\1\150\1\163\1\44\1\uffff\1\163\1\151\1\uffff\1"+
+        "\44\1\163\1\uffff\1\44\1\154\1\165\1\44\1\141\2\44\1\70\1\145\1"+
+        "\uffff\1\127\1\124\1\156\1\141\1\uffff\1\162\1\164\1\141\1\44\1"+
+        "\uffff\1\157\1\44\1\162\1\163\1\151\1\uffff\1\44\1\uffff\1\144\1"+
+        "\44\1\162\1\167\2\145\1\147\2\141\1\145\2\uffff\1\145\1\44\1\145"+
+        "\1\166\2\44\1\145\1\uffff\1\44\1\172\1\157\1\uffff\1\110\1\163\1"+
+        "\uffff\1\147\1\145\1\144\1\141\2\151\1\156\1\44\1\uffff\1\44\1\145"+
+        "\1\163\1\44\1\156\1\162\2\44\1\164\1\151\2\44\5\uffff\1\67\1\145"+
+        "\1\uffff\3\44\1\162\2\164\1\162\1\160\1\164\1\162\1\uffff\1\143"+
+        "\3\uffff\1\145\2\uffff\1\156\1\145\1\164\1\127\1\162\1\44\1\102"+
+        "\1\166\1\162\1\156\1\uffff\1\44\1\105\1\141\1\154\1\145\1\171\1"+
+        "\uffff\1\104\1\44\1\uffff\1\44\1\157\1\uffff\1\44\1\uffff\1\163"+
+        "\1\162\1\uffff\1\162\2\uffff\1\44\1\166\1\151\1\171\1\44\1\167\1"+
+        "\44\1\151\1\164\1\uffff\1\153\1\uffff\1\144\1\44\1\166\1\uffff\1"+
+        "\144\1\uffff\1\101\1\163\1\156\1\145\1\147\1\142\1\164\1\166\1\124"+
+        "\1\uffff\1\162\1\145\2\uffff\1\44\1\uffff\1\145\1\143\1\145\1\151"+
+        "\1\163\1\44\1\106\1\145\1\167\1\157\1\160\1\164\2\uffff\1\44\1\160"+
+        "\1\uffff\2\44\2\uffff\1\124\1\156\2\uffff\2\44\2\uffff\1\160\1\154"+
+        "\1\143\1\145\1\uffff\1\143\1\155\1\44\1\155\1\157\1\145\1\141\1"+
+        "\150\1\44\1\151\1\144\3\151\1\uffff\1\151\1\145\2\151\1\44\1\uffff"+
+        "\1\164\1\166\1\162\1\145\1\157\1\44\1\145\2\uffff\1\156\1\uffff"+
+        "\1\44\1\141\1\44\1\160\1\uffff\1\151\1\156\1\160\1\uffff\1\145\1"+
+        "\44\1\uffff\1\157\2\145\1\44\1\uffff\1\145\1\162\1\147\2\141\1\155"+
+        "\1\145\1\127\1\156\1\145\1\141\2\145\1\171\1\102\1\44\1\uffff\1"+
+        "\144\1\153\1\151\1\144\1\167\1\uffff\1\157\1\145\1\171\1\156\1\44"+
+        "\1\145\1\156\1\164\1\44\1\uffff\1\154\2\uffff\2\145\2\uffff\1\145"+
+        "\1\157\1\153\1\164\1\147\1\157\1\141\1\uffff\1\141\2\162\1\154\1"+
+        "\151\1\44\1\uffff\1\172\1\40\1\157\1\156\1\147\1\164\1\170\1\144"+
+        "\1\170\1\162\1\uffff\1\141\1\145\1\141\1\44\1\146\1\uffff\1\166"+
+        "\1\44\1\uffff\1\164\1\uffff\1\141\1\143\1\144\1\145\1\162\1\uffff"+
+        "\1\156\2\44\1\uffff\1\44\2\145\1\155\2\163\1\151\1\141\1\162\1\151"+
+        "\1\110\2\162\1\44\1\162\1\160\1\151\1\uffff\2\44\1\147\1\164\1\157"+
+        "\1\162\2\160\1\151\1\uffff\1\162\2\44\1\uffff\1\141\1\170\1\44\1"+
+        "\156\1\163\1\156\1\150\1\145\1\151\1\160\1\144\1\160\1\154\1\164"+
+        "\2\44\1\156\1\uffff\1\145\1\uffff\1\156\1\144\1\150\1\155\1\164"+
+        "\1\145\1\44\1\157\1\164\1\156\1\143\1\uffff\1\44\1\151\1\uffff\1"+
+        "\151\1\162\1\145\1\157\3\44\3\uffff\1\163\1\156\1\145\1\163\1\151"+
+        "\1\156\1\151\1\114\1\144\1\145\2\44\1\uffff\1\163\1\145\1\164\2"+
+        "\uffff\2\150\1\162\1\155\2\145\1\164\1\44\2\uffff\1\171\1\164\1"+
+        "\uffff\1\44\1\145\2\157\1\162\1\163\1\157\1\145\3\44\2\uffff\1\145"+
+        "\1\144\1\44\1\157\1\164\1\141\1\44\1\162\1\uffff\1\165\1\145\2\164"+
+        "\1\uffff\1\143\1\157\1\163\1\44\1\167\3\uffff\1\163\1\164\1\44\1"+
+        "\167\2\164\1\154\1\157\1\164\1\151\1\uffff\1\145\1\uffff\1\145\1"+
+        "\44\1\155\1\164\1\44\1\144\2\141\1\44\1\127\1\uffff\2\44\1\uffff"+
+        "\1\44\1\167\1\162\1\163\1\164\1\156\1\44\3\uffff\2\44\1\uffff\1"+
+        "\167\1\156\1\160\1\164\1\uffff\1\44\1\160\2\44\2\145\1\156\1\145"+
+        "\1\uffff\2\44\1\111\1\uffff\1\157\1\151\1\123\1\44\1\143\1\150\1"+
+        "\147\3\44\1\uffff\1\141\1\44\1\uffff\1\44\2\164\1\uffff\1\141\3"+
+        "\uffff\1\154\1\151\1\141\1\162\1\163\3\uffff\1\44\1\145\2\44\1\uffff"+
+        "\1\44\2\uffff\1\162\2\44\1\144\2\uffff\1\156\1\162\1\157\1\145\1"+
+        "\uffff\1\141\1\44\1\150\1\163\3\uffff\1\160\2\uffff\1\44\1\127\1"+
+        "\151\1\145\1\172\1\154\1\141\1\145\1\uffff\1\163\3\uffff\1\127\2"+
+        "\uffff\1\44\1\146\1\144\1\156\1\162\1\154\1\uffff\1\164\2\44\1\uffff"+
+        "\1\141\1\164\1\144\1\141\1\44\1\164\1\44\1\163\1\141\1\uffff\1\157"+
+        "\2\44\1\166\1\145\1\44\2\uffff\1\151\1\44\1\147\1\164\1\uffff\1"+
+        "\151\1\uffff\1\44\1\151\1\44\2\uffff\1\151\1\44\1\uffff\1\164\1"+
+        "\uffff\1\145\1\151\1\157\1\uffff\1\164\1\uffff\1\143\1\uffff\2\44"+
+        "\1\157\1\156\1\44\1\145\2\uffff\1\156\1\44\1\uffff\2\44\3\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\162\2\uffff\1\171\1\164\1\165\1\164\1\170\1\165\1\171"+
+        "\1\145\1\uffff\1\172\2\165\1\157\1\165\1\151\1\141\1\164\1\165\2"+
+        "\uffff\1\56\1\75\1\uffff\2\151\1\75\2\76\3\uffff\2\75\1\76\1\75"+
+        "\1\174\1\46\1\75\2\72\1\uffff\1\157\1\156\2\157\1\165\1\161\1\141"+
+        "\1\162\1\170\1\154\1\172\5\uffff\1\171\1\151\1\163\1\162\1\141\1"+
+        "\146\3\uffff\1\157\1\162\1\164\1\151\1\160\1\156\1\166\1\163\1\164"+
+        "\1\157\1\172\1\156\1\157\1\170\1\162\1\154\2\172\1\160\1\172\1\124"+
+        "\1\146\1\145\1\163\1\164\1\162\2\156\2\145\1\162\1\164\1\171\1\170"+
+        "\1\160\1\162\1\172\1\171\1\uffff\1\144\1\164\1\172\1\164\1\141\1"+
+        "\164\1\61\1\157\1\162\1\164\1\167\1\166\1\147\1\151\1\163\1\155"+
+        "\1\154\1\164\1\151\1\162\1\170\1\145\1\122\1\106\1\150\1\143\1\162"+
+        "\1\155\1\167\1\154\1\162\2\uffff\1\74\5\uffff\1\163\1\162\1\156"+
+        "\1\171\1\146\7\uffff\1\75\23\uffff\1\75\7\uffff\1\157\1\164\1\156"+
+        "\1\165\1\164\1\162\1\147\1\144\1\172\1\162\1\156\1\143\1\uffff\1"+
+        "\154\4\uffff\1\153\1\155\1\156\1\164\1\120\1\151\1\143\1\64\1\164"+
+        "\1\162\1\157\1\145\1\172\1\162\1\144\1\164\1\145\1\143\1\164\1\151"+
+        "\2\141\1\160\1\141\1\172\1\156\1\uffff\1\143\1\155\1\154\1\141\1"+
+        "\145\1\172\1\163\1\164\1\145\1\151\1\164\1\uffff\1\156\1\uffff\1"+
+        "\147\1\157\1\uffff\1\157\1\164\1\172\1\156\2\145\1\157\1\70\1\164"+
+        "\1\165\1\145\2\141\1\163\1\164\1\150\1\143\1\147\1\171\1\145\1\172"+
+        "\1\164\1\145\1\157\1\uffff\2\172\2\151\1\uffff\1\145\1\162\1\172"+
+        "\1\144\1\156\2\143\1\164\1\172\1\151\1\165\1\157\1\145\1\150\1\147"+
+        "\1\164\1\141\1\146\1\164\1\144\1\150\1\154\1\156\1\153\1\161\1\151"+
+        "\1\162\1\145\1\155\1\141\1\145\1\141\1\142\1\145\1\172\1\154\1\145"+
+        "\1\155\2\uffff\1\151\2\172\1\145\1\157\1\164\4\uffff\1\154\1\145"+
+        "\1\147\1\142\1\145\1\151\1\147\2\145\1\146\1\uffff\1\143\1\70\1"+
+        "\157\1\141\1\145\1\164\1\172\1\162\1\160\1\145\1\61\1\151\1\145"+
+        "\1\154\1\144\1\uffff\1\143\1\172\1\143\1\162\1\150\2\162\1\143\1"+
+        "\171\1\165\1\154\1\172\1\uffff\1\172\1\164\1\172\1\144\1\154\1\144"+
+        "\1\uffff\1\145\1\172\1\162\1\163\1\141\1\164\1\145\1\162\1\165\1"+
+        "\164\1\uffff\1\164\1\172\1\156\1\162\1\172\1\63\1\162\1\151\1\155"+
+        "\1\141\1\162\1\164\1\157\1\151\1\104\1\172\1\150\1\147\1\163\2\172"+
+        "\1\uffff\2\172\1\167\1\164\1\141\1\157\2\uffff\1\157\1\163\1\143"+
+        "\1\144\1\120\1\157\1\163\1\162\1\143\1\162\1\uffff\1\141\2\153\2"+
+        "\157\1\uffff\1\163\1\151\1\162\1\166\1\162\1\164\1\150\1\172\1\156"+
+        "\1\142\1\150\1\157\1\172\1\145\1\151\1\172\1\165\1\143\1\104\1\141"+
+        "\1\143\1\157\1\151\1\162\3\172\1\uffff\2\172\1\141\1\142\2\uffff"+
+        "\1\104\1\165\1\172\1\145\1\147\1\172\1\154\1\172\1\156\1\145\1\162"+
+        "\2\172\1\137\1\65\1\64\1\157\1\172\1\63\1\144\1\147\1\156\1\122"+
+        "\1\uffff\1\151\1\150\1\172\1\67\1\172\1\143\1\172\1\154\1\165\1"+
+        "\150\1\uffff\1\150\1\172\1\162\1\151\1\157\1\145\1\172\1\154\1\141"+
+        "\1\162\1\141\2\uffff\1\151\1\uffff\1\172\1\154\2\172\1\141\1\uffff"+
+        "\1\103\1\151\1\156\1\151\1\172\1\164\1\143\1\160\1\172\1\uffff\1"+
+        "\163\1\172\1\163\1\uffff\1\172\1\70\1\157\1\147\1\156\1\142\1\71"+
+        "\1\63\1\62\1\172\1\145\1\162\1\157\1\162\1\uffff\1\172\1\145\1\154"+
+        "\3\uffff\1\146\1\uffff\1\172\1\162\1\144\1\141\1\156\1\164\2\172"+
+        "\1\101\1\167\1\145\1\157\1\162\1\151\1\164\2\172\1\144\1\156\1\164"+
+        "\1\145\1\156\1\145\1\163\1\172\1\164\1\uffff\1\151\1\154\1\172\1"+
+        "\167\1\141\1\uffff\1\172\1\156\1\uffff\1\145\1\157\1\162\1\164\1"+
+        "\145\1\165\1\154\1\172\5\uffff\2\154\1\151\1\164\1\uffff\1\141\1"+
+        "\145\1\uffff\1\145\1\uffff\1\147\1\163\1\154\1\163\2\uffff\1\163"+
+        "\5\172\1\61\1\144\1\uffff\1\172\2\145\1\164\1\151\1\165\1\157\1"+
+        "\145\1\156\1\145\1\uffff\1\172\1\141\1\172\1\uffff\1\172\1\uffff"+
+        "\1\172\1\154\2\172\1\uffff\1\157\1\160\1\171\1\102\1\uffff\1\164"+
+        "\1\171\1\157\1\164\1\157\1\172\1\uffff\1\171\2\uffff\1\154\1\150"+
+        "\1\142\1\143\1\164\1\uffff\1\172\1\150\1\163\1\172\1\uffff\1\163"+
+        "\1\151\1\uffff\1\172\1\163\1\uffff\1\172\1\154\1\165\1\172\1\141"+
+        "\2\172\1\70\1\145\1\uffff\1\127\1\124\1\156\1\141\1\uffff\1\162"+
+        "\1\164\1\141\1\172\1\uffff\1\157\1\172\1\162\1\163\1\151\1\uffff"+
+        "\1\172\1\uffff\1\144\1\172\1\162\1\167\2\145\1\147\2\141\1\145\2"+
+        "\uffff\1\145\1\172\1\145\1\166\2\172\1\145\1\uffff\2\172\1\157\1"+
+        "\uffff\1\127\1\163\1\uffff\1\147\1\145\1\144\1\141\2\151\1\156\1"+
+        "\172\1\uffff\1\172\1\145\1\163\1\172\1\156\1\162\2\172\1\164\1\151"+
+        "\2\172\5\uffff\1\67\1\145\1\uffff\3\172\1\162\2\164\1\162\1\160"+
+        "\1\164\1\162\1\uffff\1\143\3\uffff\1\145\2\uffff\1\156\1\145\1\164"+
+        "\1\127\1\162\1\172\1\124\1\166\1\162\1\156\1\uffff\1\172\1\123\1"+
+        "\141\1\154\1\145\1\171\1\uffff\1\104\1\172\1\uffff\1\172\1\157\1"+
+        "\uffff\1\172\1\uffff\1\163\1\162\1\uffff\1\162\2\uffff\1\172\1\166"+
+        "\1\151\1\171\1\172\1\167\1\172\1\151\1\164\1\uffff\1\153\1\uffff"+
+        "\1\144\1\172\1\166\1\uffff\1\144\1\uffff\1\120\1\163\1\156\1\145"+
+        "\1\147\1\142\1\164\1\166\1\124\1\uffff\1\162\1\145\2\uffff\1\172"+
+        "\1\uffff\1\145\1\143\1\145\1\151\1\163\1\172\1\125\1\145\1\167\1"+
+        "\157\1\160\1\164\2\uffff\1\172\1\160\1\uffff\2\172\2\uffff\1\124"+
+        "\1\156\2\uffff\2\172\2\uffff\1\160\1\154\1\165\1\145\1\uffff\1\143"+
+        "\1\155\1\172\1\155\1\157\1\145\1\141\1\150\1\172\1\151\1\144\3\151"+
+        "\1\uffff\1\151\1\145\2\151\1\172\1\uffff\1\164\1\166\1\162\1\145"+
+        "\1\157\1\172\1\145\2\uffff\1\156\1\uffff\1\172\1\141\1\172\1\160"+
+        "\1\uffff\1\151\1\156\1\160\1\uffff\1\145\1\172\1\uffff\1\157\2\145"+
+        "\1\172\1\uffff\1\145\1\162\1\147\1\141\1\162\1\155\1\145\1\127\1"+
+        "\156\1\145\1\141\2\145\1\171\1\102\1\172\1\uffff\1\144\1\153\1\151"+
+        "\1\144\1\167\1\uffff\1\157\1\145\1\171\1\156\1\172\1\145\1\156\1"+
+        "\164\1\172\1\uffff\1\154\2\uffff\2\145\2\uffff\1\145\1\157\1\153"+
+        "\1\164\1\166\1\157\1\141\1\uffff\1\141\2\162\1\154\1\151\1\172\1"+
+        "\uffff\1\172\1\40\1\157\1\156\1\147\1\164\1\170\1\144\1\170\1\162"+
+        "\1\uffff\1\141\1\145\1\141\1\172\1\146\1\uffff\1\166\1\172\1\uffff"+
+        "\1\164\1\uffff\1\141\1\143\1\144\1\145\1\162\1\uffff\1\156\2\172"+
+        "\1\uffff\1\172\2\145\1\155\2\163\1\151\1\141\1\162\1\151\1\110\2"+
+        "\162\1\172\1\162\1\160\1\151\1\uffff\2\172\1\147\1\164\1\157\1\162"+
+        "\2\160\1\151\1\uffff\1\162\2\172\1\uffff\1\141\1\170\1\172\1\156"+
+        "\1\163\1\156\1\150\1\145\1\151\1\160\1\144\1\160\1\154\1\164\2\172"+
+        "\1\156\1\uffff\1\145\1\uffff\1\156\1\144\1\150\1\155\1\164\1\145"+
+        "\1\172\1\157\1\164\1\156\1\143\1\uffff\1\172\1\151\1\uffff\1\151"+
+        "\1\162\1\145\1\157\3\172\3\uffff\1\163\1\156\1\145\1\163\1\151\1"+
+        "\156\1\151\1\114\1\144\1\145\2\172\1\uffff\1\163\1\145\1\164\2\uffff"+
+        "\2\150\1\162\1\155\2\145\1\164\1\172\2\uffff\1\171\1\164\1\uffff"+
+        "\1\172\1\145\2\157\1\162\1\163\1\157\1\145\3\172\2\uffff\1\145\1"+
+        "\144\1\172\1\157\1\164\1\141\1\172\1\162\1\uffff\1\165\1\145\2\164"+
+        "\1\uffff\1\143\1\157\1\163\1\172\1\167\3\uffff\1\163\1\164\1\172"+
+        "\1\167\2\164\1\154\1\157\1\164\1\151\1\uffff\1\163\1\uffff\1\145"+
+        "\1\172\1\155\1\164\1\172\1\144\2\141\1\172\1\127\1\uffff\2\172\1"+
+        "\uffff\1\172\1\167\1\162\1\163\1\164\1\156\1\172\3\uffff\2\172\1"+
+        "\uffff\1\167\1\156\1\160\1\164\1\uffff\1\172\1\160\2\172\2\145\1"+
+        "\156\1\145\1\uffff\2\172\1\111\1\uffff\1\157\1\151\1\123\1\172\1"+
+        "\143\1\150\1\147\3\172\1\uffff\1\141\1\172\1\uffff\1\172\2\164\1"+
+        "\uffff\1\141\3\uffff\1\154\1\151\1\141\1\162\1\163\3\uffff\1\172"+
+        "\1\145\2\172\1\uffff\1\172\2\uffff\1\162\2\172\1\144\2\uffff\1\156"+
+        "\1\162\1\157\1\145\1\uffff\1\141\1\172\1\150\1\163\3\uffff\1\160"+
+        "\2\uffff\1\172\1\127\1\151\1\145\1\172\1\154\1\141\1\145\1\uffff"+
+        "\1\163\3\uffff\1\127\2\uffff\1\172\1\146\1\144\1\156\1\162\1\154"+
+        "\1\uffff\1\164\2\172\1\uffff\1\141\1\164\1\144\1\141\1\172\1\164"+
+        "\1\172\1\163\1\141\1\uffff\1\157\2\172\1\166\1\145\1\172\2\uffff"+
+        "\1\151\1\172\1\147\1\164\1\uffff\1\151\1\uffff\1\172\1\151\1\172"+
+        "\2\uffff\1\151\1\172\1\uffff\1\164\1\uffff\1\145\1\151\1\157\1\uffff"+
+        "\1\164\1\uffff\1\143\1\uffff\2\172\1\157\1\156\1\172\1\145\2\uffff"+
+        "\1\156\1\172\1\uffff\2\172\3\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\10\uffff\1\21\11\uffff\1\110\1\111\2\uffff\1\127"+
+        "\5\uffff\1\164\1\165\1\166\11\uffff\1\u0096\13\uffff\1\u0106\2\u0107"+
+        "\1\u010a\1\u010b\6\uffff\1\u0106\1\2\1\3\46\uffff\1\21\37\uffff"+
+        "\1\110\1\111\1\uffff\1\121\1\167\1\u0091\1\125\1\127\5\uffff\1\171"+
+        "\1\u008c\1\161\1\170\1\u0086\1\u0092\1\162\1\uffff\1\u0089\1\163"+
+        "\1\164\1\165\1\166\1\172\1\u0108\1\u0109\1\u008d\1\173\1\u008e\1"+
+        "\u008a\1\174\1\176\1\175\1\177\1\u0095\1\u0080\1\u00b2\1\uffff\1"+
+        "\u008f\1\u008b\1\u0094\1\u00b1\1\u0093\1\u009a\1\u0096\14\uffff"+
+        "\1\u0103\1\uffff\1\u0104\1\u0105\1\u0107\1\u010a\32\uffff\1\u009f"+
+        "\13\uffff\1\137\1\uffff\1\44\2\uffff\1\u0097\30\uffff\1\u00e5\4"+
+        "\uffff\1\u0090\46\uffff\1\u0087\1\u0088\6\uffff\1\u0083\1\u0081"+
+        "\1\u0084\1\u0082\12\uffff\1\u00d6\17\uffff\1\130\14\uffff\1\124"+
+        "\6\uffff\1\u009d\12\uffff\1\u00e6\25\uffff\1\u00ad\6\uffff\1\153"+
+        "\1\22\12\uffff\1\126\5\uffff\1\32\33\uffff\1\u00a6\4\uffff\1\u00a0"+
+        "\1\u00a1\27\uffff\1\72\12\uffff\1\157\13\uffff\1\61\1\u00d7\1\uffff"+
+        "\1\105\5\uffff\1\u00da\11\uffff\1\u0098\3\uffff\1\u00e2\16\uffff"+
+        "\1\u009c\3\uffff\1\u00cc\1\u00a8\1\46\1\uffff\1\47\32\uffff\1\71"+
+        "\5\uffff\1\120\2\uffff\1\u00db\10\uffff\1\u00f5\1\u00f6\1\67\1\u00a9"+
+        "\1\u00ce\4\uffff\1\u00d8\2\uffff\1\u00b5\1\uffff\1\u00b8\4\uffff"+
+        "\1\u00df\1\u00e0\10\uffff\1\u00e1\12\uffff\1\u00dc\3\uffff\1\15"+
+        "\1\uffff\1\117\4\uffff\1\u00a5\4\uffff\1\156\6\uffff\1\154\1\uffff"+
+        "\1\u00cf\1\u00a7\5\uffff\1\135\4\uffff\1\14\2\uffff\1\u00cb\2\uffff"+
+        "\1\u00e4\11\uffff\1\131\4\uffff\1\u00b0\4\uffff\1\u00ab\5\uffff"+
+        "\1\u0101\1\uffff\1\112\12\uffff\1\u00d5\1\u00d0\7\uffff\1\u00d9"+
+        "\3\uffff\1\35\2\uffff\1\u009e\10\uffff\1\u00d4\14\uffff\1\u00ed"+
+        "\1\u00ee\1\u00ef\1\u00f0\1\u00f1\2\uffff\1\u00e3\12\uffff\1\u00fc"+
+        "\1\uffff\1\13\1\u00a3\1\56\1\uffff\1\136\1\u0099\12\uffff\1\142"+
+        "\6\uffff\1\160\2\uffff\1\11\2\uffff\1\u00f2\1\uffff\1\u00f4\2\uffff"+
+        "\1\33\1\uffff\1\u00e8\1\u00e9\11\uffff\1\u00aa\1\uffff\1\141\3\uffff"+
+        "\1\24\1\uffff\1\u00bc\11\uffff\1\152\2\uffff\1\u00ac\1\132\1\uffff"+
+        "\1\34\14\uffff\1\113\1\u00dd\2\uffff\1\155\2\uffff\1\u00b6\1\u00b7"+
+        "\2\uffff\1\u00eb\1\u00ec\2\uffff\1\u00ff\1\1\4\uffff\1\150\16\uffff"+
+        "\1\u009b\5\uffff\1\u00ae\7\uffff\1\u00bf\1\u00a2\1\uffff\1\u00f3"+
+        "\4\uffff\1\u00ea\3\uffff\1\114\2\uffff\1\23\4\uffff\1\25\20\uffff"+
+        "\1\u00d3\5\uffff\1\u00ca\11\uffff\1\133\1\uffff\1\u00b3\1\u00b4"+
+        "\2\uffff\1\u0102\1\u0100\7\uffff\1\64\6\uffff\1\140\12\uffff\1\116"+
+        "\5\uffff\1\17\2\uffff\1\12\1\uffff\1\u00e7\5\uffff\1\16\3\uffff"+
+        "\1\u00ba\21\uffff\1\122\11\uffff\1\u00fd\3\uffff\1\103\21\uffff"+
+        "\1\144\1\uffff\1\5\13\uffff\1\134\2\uffff\1\u00a4\7\uffff\1\123"+
+        "\1\20\1\u00cd\14\uffff\1\27\3\uffff\1\u00c9\1\u00d1\10\uffff\1\107"+
+        "\1\77\2\uffff\1\u00d2\13\uffff\1\146\1\151\10\uffff\1\u00fe\4\uffff"+
+        "\1\u0085\5\uffff\1\40\1\147\1\26\12\uffff\1\u00c8\1\uffff\1\u00f8"+
+        "\12\uffff\1\57\2\uffff\1\70\7\uffff\1\63\1\65\1\106\2\uffff\1\115"+
+        "\4\uffff\1\45\10\uffff\1\30\3\uffff\1\u00c1\12\uffff\1\62\2\uffff"+
+        "\1\37\3\uffff\1\54\1\uffff\1\145\1\u00b9\1\73\5\uffff\1\60\1\4\1"+
+        "\u00af\4\uffff\1\143\1\uffff\1\7\1\10\4\uffff\1\31\1\u00bb\4\uffff"+
+        "\1\u00c3\4\uffff\1\u00f9\1\u00fa\1\u00de\1\uffff\1\36\1\76\10\uffff"+
+        "\1\41\1\uffff\1\43\1\50\1\6\1\uffff\1\u00be\1\101\6\uffff\1\u00c6"+
+        "\3\uffff\1\52\11\uffff\1\u00f7\6\uffff\1\u00fb\1\66\4\uffff\1\75"+
+        "\1\uffff\1\104\3\uffff\1\u00c2\1\u00c4\2\uffff\1\u00c7\1\uffff\1"+
+        "\55\3\uffff\1\42\1\uffff\1\u00bd\1\uffff\1\u00c0\6\uffff\1\53\1"+
+        "\74\2\uffff\1\51\2\uffff\1\100\1\u00c5\1\102";
+    static final String DFA21_specialS =
+        "\1\0\u055d\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\74\2\73\2\74\1\73\22\74\1\73\1\51\1\71\1\40\1\70\1\44\1"+
+            "\50\1\72\1\26\1\27\1\35\1\31\1\32\1\36\1\30\1\43\1\65\11\66"+
+            "\1\53\1\54\1\45\1\37\1\46\1\52\1\14\1\70\1\55\1\70\1\60\4\70"+
+            "\1\56\2\70\1\57\6\70\1\61\7\70\1\41\1\74\1\42\1\67\1\70\1\74"+
+            "\1\15\1\17\1\11\1\5\1\10\1\6\1\16\1\21\1\7\1\63\1\13\1\34\1"+
+            "\23\1\25\1\24\1\1\1\64\1\20\1\4\1\12\1\62\1\33\1\22\3\70\1\2"+
+            "\1\47\1\3\uff82\74",
+            "\1\75\2\uffff\1\102\1\100\6\uffff\1\101\2\uffff\1\77\2\uffff"+
+            "\1\76",
+            "",
+            "",
+            "\1\107\1\uffff\1\110\16\uffff\1\106\1\112\1\uffff\1\111\1"+
+            "\uffff\1\113",
+            "\1\116\3\uffff\1\114\3\uffff\1\115\5\uffff\1\120\4\uffff\1"+
+            "\117",
+            "\1\125\7\uffff\1\123\5\uffff\1\124\2\uffff\1\122\2\uffff\1"+
+            "\121",
+            "\1\127\1\uffff\1\131\6\uffff\1\130\1\126\4\uffff\1\132\1\133",
+            "\1\140\12\uffff\1\135\5\uffff\1\137\3\uffff\1\134\1\uffff"+
+            "\1\136",
+            "\1\145\12\uffff\1\142\2\uffff\1\141\2\uffff\1\143\2\uffff"+
+            "\1\144",
+            "\1\147\1\152\1\uffff\1\151\11\uffff\1\146\6\uffff\1\150",
+            "\1\153",
+            "",
+            "\1\156\12\uffff\1\155\4\uffff\1\157\6\uffff\1\160",
+            "\1\162\15\uffff\1\163\1\uffff\1\161",
+            "\1\165\12\uffff\1\164\10\uffff\1\166",
+            "\1\170\3\uffff\1\171\5\uffff\1\167",
+            "\1\175\3\uffff\1\172\11\uffff\1\173\5\uffff\1\174",
+            "\1\u0080\6\uffff\1\177\1\176",
+            "\1\u0081",
+            "\1\u0087\2\uffff\1\u0083\7\uffff\1\u0084\1\uffff\1\u0082\1"+
+            "\uffff\1\u0086\1\uffff\1\u0085",
+            "\1\u0088\3\uffff\1\u0089\11\uffff\1\u008b\5\uffff\1\u008a",
+            "",
+            "",
+            "\1\u008e",
+            "\1\u0091\21\uffff\1\u0090",
+            "",
+            "\1\u0095\7\uffff\1\u0094",
+            "\1\u0097\3\uffff\1\u0098\3\uffff\1\u0096",
+            "\1\u009a\22\uffff\1\u0099",
+            "\1\u009e\17\uffff\1\u009c\1\u009d",
+            "\1\u00a0\1\u00a1",
+            "",
+            "",
+            "",
+            "\1\u00a7\4\uffff\1\u00a8\15\uffff\1\u00a6",
+            "\1\u00aa",
+            "\1\u00ac",
+            "\1\u00ae",
+            "\1\u00b0",
+            "\1\u00b2",
+            "\1\u00b4",
+            "\1\u00b7\13\uffff\1\u00b6",
+            "\1\u00b9",
+            "",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00c0\15\uffff\1\u00bf",
+            "\1\u00c1\1\u00c2",
+            "\1\u00c3\1\uffff\1\u00c4\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\13\uffff\1\u00c8\6\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3"+
+            "\u00cb\5\uffff\1\u00cb\13\uffff\1\u00c8",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\22\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1"+
+            "\u00cb",
+            "\1\103\34\uffff\32\103\4\uffff\1\103\1\uffff\32\103",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ce\25\uffff\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "",
+            "",
+            "",
+            "\1\u00d6\15\uffff\1\u00d7",
+            "\1\u00d9\11\uffff\1\u00d8",
+            "\1\u00db\14\uffff\1\u00dc\5\uffff\1\u00da",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e3\5\uffff\1\u00e2\6\uffff\1\u00e0\2\uffff\1\u00e1",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\26\103\1\u00e7\3\103",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb\10\uffff\1\u00ec\11\uffff\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\10\103\1\u00f0\11\103\1\u00f3\1\u00f1\1\103\1\u00f2\4\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\4\103\1\u00f5\25\103",
+            "\1\u00f7\16\uffff\1\u00f8",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u00fb\13\uffff\1\u00fa",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0104\7\uffff\1\u0103\1\uffff\1\u0102",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108\2\uffff\1\u0109\1\u010a",
+            "\1\u010c\7\uffff\1\u010b\13\uffff\1\u010d\3\uffff\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0113",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\22\103\1\u0116\7\103",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c\5\uffff\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121\5\uffff\1\u0123\6\uffff\1\u0122\1\uffff\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a\11\uffff\1\u012b\5\uffff\1\u012c",
+            "\1\u012d",
+            "\1\u012f\5\uffff\1\u012e",
+            "\1\u0130\5\uffff\1\u0131",
+            "\1\u0132",
+            "\1\u0134\20\uffff\1\u0133",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c\3\uffff\1\u013d",
+            "",
+            "",
+            "\1\u013e",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0140",
+            "\1\u0142\5\uffff\1\u0141",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0146",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0148",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\2\103\1\u0152\1\u0153\26\103",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "",
+            "\12\u00c9\10\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1\u00cb"+
+            "\22\uffff\1\u00c9\2\uffff\1\u00cb\1\uffff\3\u00cb\5\uffff\1"+
+            "\u00cb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a\20\uffff\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0172",
+            "",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "",
+            "\1\u017e",
+            "",
+            "\1\u017f",
+            "\1\u0180",
+            "",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0189\6\uffff\1\u0188",
+            "\1\u018b\15\uffff\1\u018a",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0193\2\uffff\1\u0192",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196\12\uffff\1\u0197",
+            "\1\u0198",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\1\103\1\u019f\15\103\1\u019e\2\103\1\u019d\7\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01a2",
+            "\1\u01a3",
+            "",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\103\13\uffff\12\103\7\uffff\1\103\1\u01a9\6\103\1\u01a6"+
+            "\4\103\1\u01a7\4\103\1\u01aa\1\u01ab\1\u01a8\5\103\4\uffff\1"+
+            "\103\1\uffff\32\103",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01b3",
+            "\1\u01b4\2\uffff\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5\3\uffff\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "",
+            "",
+            "\1\u01d2",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "",
+            "",
+            "",
+            "",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0\1\u01e1\1\uffff\1\u01e3\1\u01e2",
+            "\1\u01e4",
+            "",
+            "\1\u01e5",
+            "\1\u01e7\6\uffff\1\u01e6",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1\3\uffff\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "",
+            "\1\u01f6",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\103\13\uffff\12\103\7\uffff\17\103\1\u0201\12\103\4\uffff"+
+            "\1\103\1\uffff\14\103\1\u0202\15\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0205",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "",
+            "\1\u020a",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\10\103\1\u020b\21\103",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\u0210",
+            "\1\u0211",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "",
+            "\1\u0215",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\u0219\1\uffff"+
+            "\32\103",
+            "\1\u021c\1\u021b",
+            "\1\u021d",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\u0223\1\uffff\1\u0221\5\uffff\1\u0222\47\uffff\1\u0220",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\16\103\1\u0230\13\103",
+            "\1\u0232",
+            "\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "",
+            "",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "",
+            "\1\u0240",
+            "\1\u0241",
+            "\1\u0242",
+            "\1\u0243",
+            "\1\u0244",
+            "",
+            "\1\u0245",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "\1\103\13\uffff\12\103\7\uffff\17\103\1\u0251\12\103\4\uffff"+
+            "\1\103\1\uffff\32\103",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\u0258",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\u025b",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0263",
+            "\1\u0264",
+            "",
+            "",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0268",
+            "\1\u0269",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u026b",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u026d",
+            "\1\u026e",
+            "\1\u026f",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\u0270\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0273",
+            "\1\u0274\1\u0275\1\u0276\1\u0277\1\u0278",
+            "\1\u0279",
+            "\1\u027a",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u027c",
+            "\1\u027d",
+            "\1\u027e",
+            "\1\u027f",
+            "\1\u0280\1\u0281\12\uffff\1\u0282\3\uffff\1\u0283",
+            "",
+            "\1\u0284",
+            "\1\u0285",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0287",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\14\103\1\u0288\5\103\1\u0289\7\103",
+            "\1\u028b",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u028d",
+            "\1\u028e",
+            "\1\u028f",
+            "",
+            "\1\u0290",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0292",
+            "\1\u0293",
+            "\1\u0294",
+            "\1\u0295",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0297",
+            "\1\u0298",
+            "\1\u0299",
+            "\1\u029a",
+            "",
+            "",
+            "\1\u029b",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\22\103\1\u029c\7\103",
+            "\1\u029e",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02a1",
+            "",
+            "\1\u02a2",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\u02a5",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02a7",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\22\103\1\u02aa\7\103",
+            "",
+            "\1\u02ac\16\uffff\1\u02ad",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02af",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\u02b0\1\uffff"+
+            "\32\103",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\u02b7",
+            "\1\u02b8",
+            "\1\u02b9",
+            "\1\103\13\uffff\12\103\7\uffff\3\103\1\u02ba\26\103\4\uffff"+
+            "\1\103\1\uffff\32\103",
+            "\1\u02bc",
+            "\1\u02bd",
+            "\1\u02be",
+            "\1\u02bf",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02c1",
+            "\1\u02c2\2\uffff\1\u02c3",
+            "",
+            "",
+            "",
+            "\1\u02c4",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02c6",
+            "\1\u02c7",
+            "\1\u02c8",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\22\103\1\u02cc\7\103",
+            "\1\u02ce",
+            "\1\u02cf",
+            "\1\u02d0",
+            "\1\u02d1",
+            "\1\u02d2\14\uffff\1\u02d3",
+            "\1\u02d4",
+            "\1\u02d5",
+            "\1\103\13\uffff\12\103\7\uffff\21\103\1\u02d6\10\103\4\uffff"+
+            "\1\103\1\uffff\21\103\1\u02d7\10\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02da",
+            "\1\u02db",
+            "\1\u02dc",
+            "\1\u02dd",
+            "\1\u02de",
+            "\1\u02df",
+            "\1\u02e0",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02e2",
+            "",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02e6",
+            "\1\u02e7",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u02e9",
+            "",
+            "\1\u02ea",
+            "\1\u02eb",
+            "\1\u02ec",
+            "\1\u02ed",
+            "\1\u02ee",
+            "\1\u02ef",
+            "\1\u02f0",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02f2",
+            "\1\u02f3",
+            "\1\u02f4",
+            "\1\u02f5",
+            "",
+            "\1\u02f6",
+            "\1\u02f7",
+            "",
+            "\1\u02f8",
+            "",
+            "\1\u02f9",
+            "\1\u02fa",
+            "\1\u02fb",
+            "\1\u02fc",
+            "",
+            "",
+            "\1\u02fd",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0303",
+            "\1\u0304",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0306",
+            "\1\u0307",
+            "\1\u0308",
+            "\1\u0309\7\uffff\1\u030a",
+            "\1\u030b",
+            "\1\u030c",
+            "\1\u030d",
+            "\1\u030e",
+            "\1\u030f",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0311",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0315",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0318",
+            "\1\u0319\15\uffff\1\u031a",
+            "\1\u031b",
+            "\1\u031c",
+            "",
+            "\1\u031d",
+            "\1\u031e",
+            "\1\u031f",
+            "\1\u0320",
+            "\1\u0321",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0323",
+            "",
+            "",
+            "\1\u0324",
+            "\1\u0325",
+            "\1\u0326",
+            "\1\u0327",
+            "\1\u0328",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u032a",
+            "\1\u032b",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u032d",
+            "\1\u032e",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0330",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0335",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0338",
+            "\1\u0339",
+            "",
+            "\1\u033a",
+            "\1\u033b",
+            "\1\u033c",
+            "\1\u033d",
+            "",
+            "\1\u033e",
+            "\1\u033f",
+            "\1\u0340",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0342",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0344",
+            "\1\u0345",
+            "\1\u0346",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0348",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u034a",
+            "\1\u034b",
+            "\1\u034c",
+            "\1\u034d",
+            "\1\u034e",
+            "\1\u034f",
+            "\1\u0350",
+            "\1\u0351",
+            "",
+            "",
+            "\1\u0352",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0354",
+            "\1\u0355",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0358",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u035a",
+            "\1\u035b",
+            "",
+            "\1\u035c\16\uffff\1\u035d",
+            "\1\u035e",
+            "",
+            "\1\u035f",
+            "\1\u0360",
+            "\1\u0361",
+            "\1\u0362",
+            "\1\u0363",
+            "\1\u0364",
+            "\1\u0365",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0368",
+            "\1\u0369",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u036b",
+            "\1\u036c",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u036f",
+            "\1\u0370",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0373",
+            "\1\u0374",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\1\u0379\1\103\1\u0378\13\103"+
+            "\1\u0377\2\103\1\u037a\10\103\4\uffff\1\103\1\uffff\32\103",
+            "\1\u037c",
+            "\1\u037d",
+            "\1\u037e",
+            "\1\u037f",
+            "\1\u0380",
+            "\1\u0381",
+            "\1\u0382",
+            "",
+            "\1\u0383",
+            "",
+            "",
+            "",
+            "\1\u0384",
+            "",
+            "",
+            "\1\u0385",
+            "\1\u0386",
+            "\1\u0387",
+            "\1\u0388",
+            "\1\u0389",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u038b\21\uffff\1\u038c",
+            "\1\u038d",
+            "\1\u038e",
+            "\1\u038f",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0392\15\uffff\1\u0391",
+            "\1\u0393",
+            "\1\u0394",
+            "\1\u0395",
+            "\1\u0396",
+            "",
+            "\1\u0397",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u039a",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u039c",
+            "\1\u039d",
+            "",
+            "\1\u039e",
+            "",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\u039f\1\uffff"+
+            "\32\103",
+            "\1\u03a1",
+            "\1\u03a2",
+            "\1\u03a3",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03a5",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\22\103\1\u03a6\7\103",
+            "\1\u03a8",
+            "\1\u03a9",
+            "",
+            "\1\u03aa",
+            "",
+            "\1\u03ab",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03ad",
+            "",
+            "\1\u03ae",
+            "",
+            "\1\u03af\3\uffff\1\u03b2\10\uffff\1\u03b0\1\uffff\1\u03b1",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\u03b5",
+            "\1\u03b6",
+            "\1\u03b7",
+            "\1\u03b8",
+            "\1\u03b9",
+            "\1\u03ba",
+            "",
+            "\1\u03bb",
+            "\1\u03bc",
+            "",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u03be",
+            "\1\u03bf",
+            "\1\u03c0",
+            "\1\u03c1",
+            "\1\u03c2",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03c4\13\uffff\1\u03c5\1\uffff\1\u03c6\1\u03c7",
+            "\1\u03c8",
+            "\1\u03c9",
+            "\1\u03ca",
+            "\1\u03cb",
+            "\1\u03cc",
+            "",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03ce",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "",
+            "\1\u03d1",
+            "\1\u03d2",
+            "",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "",
+            "\1\u03d5",
+            "\1\u03d6",
+            "\1\u03d7\21\uffff\1\u03d8",
+            "\1\u03d9",
+            "",
+            "\1\u03da",
+            "\1\u03db",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03dd",
+            "\1\u03de",
+            "\1\u03df",
+            "\1\u03e0",
+            "\1\u03e1",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\21\103\1\u03e2\10\103",
+            "\1\u03e4",
+            "\1\u03e5",
+            "\1\u03e6",
+            "\1\u03e7",
+            "\1\u03e8",
+            "",
+            "\1\u03e9",
+            "\1\u03ea",
+            "\1\u03eb",
+            "\1\u03ec",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\6\103\1\u03ed\23\103",
+            "",
+            "\1\u03ef",
+            "\1\u03f0",
+            "\1\u03f1",
+            "\1\u03f2",
+            "\1\u03f3",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03f5",
+            "",
+            "",
+            "\1\u03f6",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03f8",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u03fa",
+            "",
+            "\1\u03fb",
+            "\1\u03fc",
+            "\1\u03fd",
+            "",
+            "\1\u03fe",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0400",
+            "\1\u0401",
+            "\1\u0402",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0404",
+            "\1\u0405",
+            "\1\u0406",
+            "\1\u0407",
+            "\1\u0408\15\uffff\1\u0409\2\uffff\1\u040a",
+            "\1\u040b",
+            "\1\u040c",
+            "\1\u040d",
+            "\1\u040e",
+            "\1\u040f",
+            "\1\u0410",
+            "\1\u0411",
+            "\1\u0412",
+            "\1\u0413",
+            "\1\u0414",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0416",
+            "\1\u0417",
+            "\1\u0418",
+            "\1\u0419",
+            "\1\u041a",
+            "",
+            "\1\u041b",
+            "\1\u041c",
+            "\1\u041d",
+            "\1\u041e",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0420",
+            "\1\u0421",
+            "\1\u0422",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0424",
+            "",
+            "",
+            "\1\u0425",
+            "\1\u0426",
+            "",
+            "",
+            "\1\u0427",
+            "\1\u0428",
+            "\1\u0429",
+            "\1\u042a",
+            "\1\u042c\13\uffff\1\u042d\2\uffff\1\u042b",
+            "\1\u042e",
+            "\1\u042f",
+            "",
+            "\1\u0430",
+            "\1\u0431",
+            "\1\u0432",
+            "\1\u0433",
+            "\1\u0434",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0436",
+            "\1\u0437",
+            "\1\u0438",
+            "\1\u0439",
+            "\1\u043a",
+            "\1\u043b",
+            "\1\u043c",
+            "\1\u043d",
+            "\1\u043e",
+            "\1\u043f",
+            "",
+            "\1\u0440",
+            "\1\u0441",
+            "\1\u0442",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0444",
+            "",
+            "\1\u0445",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u0447",
+            "",
+            "\1\u0448",
+            "\1\u0449",
+            "\1\u044a",
+            "\1\u044b",
+            "\1\u044c",
+            "",
+            "\1\u044d",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0451",
+            "\1\u0452",
+            "\1\u0453",
+            "\1\u0454",
+            "\1\u0455",
+            "\1\u0456",
+            "\1\u0457",
+            "\1\u0458",
+            "\1\u0459",
+            "\1\u045a",
+            "\1\u045b",
+            "\1\u045c",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u045e",
+            "\1\u045f",
+            "\1\u0460",
+            "",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\u0463",
+            "\1\u0464",
+            "\1\u0465",
+            "\1\u0466",
+            "\1\u0467",
+            "\1\u0468",
+            "\1\u0469",
+            "",
+            "\1\u046a",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "\1\103\13\uffff\12\103\7\uffff\32\103\4\uffff\1\103\1\uffff"+
+            "\32\103",
+            "",
+            "\1\u046d",
+            "\1\u046e",
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLParser.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLParser.java
new file mode 100644
index 0000000..d4c23bb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.services.StatemachineDSLGrammarAccess;
+
+
+
+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 InternalStatemachineDSLParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'statemachine'", "'described by'", "'functiongroup'", "'initialState'", "'initialEvent'", "'events'", "'controls'", "'states'", "'event'", "'state'", "'triggers'", "'identity'", "'keystroke'", "'@'", "'and'", "'trigger'", "'guards'", "'actions'", "'transition'", "'blinkRate'", "'clearDevice'", "'createWindow'", "'row'", "'column'", "'height'", "'width'", "'windowHeight'", "'windowWidth'", "'cursorType'", "'destroyWindow'", "'deviceBrightness'", "'displayBitmap'", "'id'", "'displayText'", "'text'", "'type'", "'displayTextAt'", "'interCharacterWait'", "'marqueeFormat'", "'marqueeRepeatWait'", "'marqueeType'", "'marqueeUnitWait'", "'scroll'", "'openDrawer'", "'printBarcode'", "'data'", "'barcodeType'", "'printBitmap'", "'printCut'", "'printNormal'", "'registerBitmap'", "'name'", "'paymentOpen'", "'host'", "'port'", "'paymentClose'", "'paymentAcknowledge'", "'paymentReversal'", "'withPassword'", "'ofReceipt'", "'paymentRegistration'", "'configuration'", "'paymentAuthorization'", "'ofAmount'", "'paymentResponse'", "'from'", "'printReport'", "'operation'", "'('", "')'", "'guard'", "'onFail'", "'caption'", "'description'", "'function'", "'store'", "'with'", "'.'", "'retrieve'", "'translate'", "'dto'", "'+'", "'get'", "','", "'set'", "'clear'", "'remove'", "'visible'", "'invisible'", "'image'", "'search'", "'in'", "'schedule'", "'keypad'", "'fields'", "'dataProvider'", "'scheduler'", "'lineDisplay'", "'posPrinter'", "'cashDrawer'", "'payment'", "'peripheral'", "'button'", "'key'", "'field'", "'layout'", "'delay'", "'send'", "'import'", "'*'", "'-'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'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'", "'?'", "'&'", "'Boolean'", "'Integer'", "'Long'", "'Double'", "'String'", "'Date'", "'SuggestText'", "'keyboard'", "'getIPAddress'", "'getNow'", "'getUserAgentInfo'", "'isTouchDevice'", "'isHttps'", "'getBrowserLocale'", "'getUserName'", "'getUserPassword'", "'getUserEmail'", "'getUserPosition'", "'getUserPrintService'", "'getSceenWidth'", "'getScreenHeight'", "'getTrigger'", "'humanized'", "'warning'", "'error'", "'tray'", "'assistive'", "'none'", "'fixed'", "'block'", "'halfblock'", "'underline'", "'reverse'", "'other'", "'blink'", "'up'", "'down'", "'left'", "'right'", "'init'", "'walk'", "'place'", "'normal'", "'blinkreverse'", "'upca'", "'upcb'", "'jan8'", "'ean8'", "'jan13'", "'ean13'", "'tf'", "'itf'", "'codeabar'", "'code39'", "'code93'", "'code128'", "'upca_s'", "'upce_s'", "'upcd1'", "'upcd2'", "'upcd3'", "'upcd4'", "'upcd5'", "'ean8_s'", "'ean13_s'", "'ean128'", "'orca'", "'ocrb'", "'code128_parsed'", "'gs1databar'", "'gs1databar_e'", "'gs1databar_s'", "'gs1databar_e_s'", "'pdf417'", "'maxicode'", "'datamatrix'", "'qrcode'", "'uqrcode'", "'aztec'", "'updf417'"
+    };
+    public static final int T__144=144;
+    public static final int T__265=265;
+    public static final int T__143=143;
+    public static final int T__264=264;
+    public static final int T__146=146;
+    public static final int T__267=267;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__266=266;
+    public static final int T__140=140;
+    public static final int T__261=261;
+    public static final int T__260=260;
+    public static final int T__142=142;
+    public static final int T__263=263;
+    public static final int T__141=141;
+    public static final int T__262=262;
+    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__258=258;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__257=257;
+    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__259=259;
+    public static final int T__133=133;
+    public static final int T__254=254;
+    public static final int T__132=132;
+    public static final int T__253=253;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__256=256;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int T__255=255;
+    public static final int T__250=250;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__252=252;
+    public static final int T__130=130;
+    public static final int T__251=251;
+    public static final int RULE_INT=5;
+    public static final int T__66=66;
+    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__247=247;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__246=246;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__249=249;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__248=248;
+    public static final int T__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    public static final int T__270=270;
+    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__269=269;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__268=268;
+    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__100=100;
+    public static final int T__221=221;
+    public static final int T__220=220;
+    public static final int T__102=102;
+    public static final int T__223=223;
+    public static final int T__101=101;
+    public static final int T__222=222;
+    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__218=218;
+    public static final int T__217=217;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__219=219;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__216=216;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__243=243;
+    public static final int T__121=121;
+    public static final int T__242=242;
+    public static final int T__124=124;
+    public static final int T__245=245;
+    public static final int T__123=123;
+    public static final int T__244=244;
+    public static final int T__120=120;
+    public static final int T__241=241;
+    public static final int T__240=240;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__239=239;
+    public static final int T__115=115;
+    public static final int T__236=236;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__235=235;
+    public static final int T__117=117;
+    public static final int T__238=238;
+    public static final int T__116=116;
+    public static final int T__237=237;
+    public static final int T__111=111;
+    public static final int T__232=232;
+    public static final int T__110=110;
+    public static final int T__231=231;
+    public static final int T__113=113;
+    public static final int T__234=234;
+    public static final int T__112=112;
+    public static final int T__233=233;
+    public static final int T__230=230;
+    public static final int T__108=108;
+    public static final int T__229=229;
+    public static final int T__107=107;
+    public static final int T__228=228;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__225=225;
+    public static final int T__103=103;
+    public static final int T__224=224;
+    public static final int T__106=106;
+    public static final int T__227=227;
+    public static final int T__105=105;
+    public static final int T__226=226;
+    public static final int RULE_HEX=7;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=6;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+
+        public InternalStatemachineDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalStatemachineDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalStatemachineDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g"; }
+
+
+
+     	private StatemachineDSLGrammarAccess grammarAccess;
+     	
+        public InternalStatemachineDSLParser(TokenStream input, StatemachineDSLGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "StatemachineModel";	
+       	}
+       	
+       	@Override
+       	protected StatemachineDSLGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleStatemachineModel"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:68:1: entryRuleStatemachineModel returns [EObject current=null] : iv_ruleStatemachineModel= ruleStatemachineModel EOF ;
+    public final EObject entryRuleStatemachineModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:69:2: (iv_ruleStatemachineModel= ruleStatemachineModel EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:70:2: iv_ruleStatemachineModel= ruleStatemachineModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineModel_in_entryRuleStatemachineModel75);
+            iv_ruleStatemachineModel=ruleStatemachineModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineModel"
+
+
+    // $ANTLR start "ruleStatemachineModel"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:77:1: ruleStatemachineModel returns [EObject current=null] : ( (lv_packages_0_0= ruleStatemachinePackage ) )* ;
+    public final EObject ruleStatemachineModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:80:28: ( ( (lv_packages_0_0= ruleStatemachinePackage ) )* )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:81:1: ( (lv_packages_0_0= ruleStatemachinePackage ) )*
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:81:1: ( (lv_packages_0_0= ruleStatemachinePackage ) )*
+            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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:82:1: (lv_packages_0_0= ruleStatemachinePackage )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:82:1: (lv_packages_0_0= ruleStatemachinePackage )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:83:3: lv_packages_0_0= ruleStatemachinePackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineModelAccess().getPackagesStatemachinePackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachinePackage_in_ruleStatemachineModel130);
+            	    lv_packages_0_0=ruleStatemachinePackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"StatemachinePackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineModel"
+
+
+    // $ANTLR start "entryRuleStatemachinePackage"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:107:1: entryRuleStatemachinePackage returns [EObject current=null] : iv_ruleStatemachinePackage= ruleStatemachinePackage EOF ;
+    public final EObject entryRuleStatemachinePackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachinePackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:108:2: (iv_ruleStatemachinePackage= ruleStatemachinePackage EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:109:2: iv_ruleStatemachinePackage= ruleStatemachinePackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachinePackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachinePackage_in_entryRuleStatemachinePackage166);
+            iv_ruleStatemachinePackage=ruleStatemachinePackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachinePackage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachinePackage176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachinePackage"
+
+
+    // $ANTLR start "ruleStatemachinePackage"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:116:1: ruleStatemachinePackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleStatemachinePackage() 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_statemachines_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:120:2: ()
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getStatemachinePackageAccess().getStatemachinePackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleStatemachinePackage222); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachinePackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:132:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleStatemachinePackage243);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* 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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleStatemachineImport ) )* ( (lv_statemachines_5_0= ruleStatemachine ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleStatemachinePackage256); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getStatemachinePackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:152:1: ( (lv_imports_4_0= ruleStatemachineImport ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==124) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:153:1: (lv_imports_4_0= ruleStatemachineImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:153:1: (lv_imports_4_0= ruleStatemachineImport )
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:154:3: lv_imports_4_0= ruleStatemachineImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getImportsStatemachineImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleStatemachineImport_in_ruleStatemachinePackage277);
+                    	    lv_imports_4_0=ruleStatemachineImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"StatemachineImport");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:170:3: ( (lv_statemachines_5_0= ruleStatemachine ) )*
+                    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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:171:1: (lv_statemachines_5_0= ruleStatemachine )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:171:1: (lv_statemachines_5_0= ruleStatemachine )
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:172:3: lv_statemachines_5_0= ruleStatemachine
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getStatemachinePackageAccess().getStatemachinesStatemachineParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleStatemachine_in_ruleStatemachinePackage299);
+                    	    lv_statemachines_5_0=ruleStatemachine();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getStatemachinePackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"statemachines",
+                    	              		lv_statemachines_5_0, 
+                    	              		"Statemachine");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleStatemachinePackage312); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getStatemachinePackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachinePackage"
+
+
+    // $ANTLR start "entryRuleStatemachine"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:200:1: entryRuleStatemachine returns [EObject current=null] : iv_ruleStatemachine= ruleStatemachine EOF ;
+    public final EObject entryRuleStatemachine() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachine = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:201:2: (iv_ruleStatemachine= ruleStatemachine EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:202:2: iv_ruleStatemachine= ruleStatemachine EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachine_in_entryRuleStatemachine350);
+            iv_ruleStatemachine=ruleStatemachine();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachine; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachine360); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachine"
+
+
+    // $ANTLR start "ruleStatemachine"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:209:1: ruleStatemachine returns [EObject current=null] : (otherlv_0= 'statemachine' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )? otherlv_6= 'initialState' ( (otherlv_7= RULE_ID ) ) otherlv_8= 'initialEvent' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) ) (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' ) (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' ) ) ;
+    public final EObject ruleStatemachine() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token lv_description_2_0=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_19=null;
+        Token otherlv_21=null;
+        AntlrDatatypeRuleToken lv_descriptionValue_3_0 = null;
+
+        EObject lv_events_12_0 = null;
+
+        EObject lv_controls_16_0 = null;
+
+        EObject lv_states_20_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:212:28: ( (otherlv_0= 'statemachine' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )? otherlv_6= 'initialState' ( (otherlv_7= RULE_ID ) ) otherlv_8= 'initialEvent' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) ) (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' ) (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:213:1: (otherlv_0= 'statemachine' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )? otherlv_6= 'initialState' ( (otherlv_7= RULE_ID ) ) otherlv_8= 'initialEvent' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) ) (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' ) (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:213:1: (otherlv_0= 'statemachine' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )? otherlv_6= 'initialState' ( (otherlv_7= RULE_ID ) ) otherlv_8= 'initialEvent' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) ) (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' ) (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:213:3: otherlv_0= 'statemachine' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )? otherlv_6= 'initialState' ( (otherlv_7= RULE_ID ) ) otherlv_8= 'initialEvent' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) ) (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' ) (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' )
+            {
+            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleStatemachine397); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineAccess().getStatemachineKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:217:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:218:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:218:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:219:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachine414); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:235:2: ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:235:3: ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:235:3: ( (lv_description_2_0= 'described by' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:236:1: (lv_description_2_0= 'described by' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:236:1: (lv_description_2_0= 'described by' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:237:3: lv_description_2_0= 'described by'
+                    {
+                    lv_description_2_0=(Token)match(input,17,FOLLOW_17_in_ruleStatemachine438); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_description_2_0, grammarAccess.getStatemachineAccess().getDescriptionDescribedByKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineRule());
+                      	        }
+                             		setWithLastConsumed(current, "description", true, "described by");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:250:2: ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:251:1: (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:251:1: (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:252:3: lv_descriptionValue_3_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleStatemachine472);
+                    lv_descriptionValue_3_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"descriptionValue",
+                              		lv_descriptionValue_3_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:268:4: (otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) ) )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==18) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:268:6: otherlv_4= 'functiongroup' ( (otherlv_5= RULE_ID ) )
+                    {
+                    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleStatemachine487); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_4, grammarAccess.getStatemachineAccess().getFunctiongroupKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:272:1: ( (otherlv_5= RULE_ID ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:273:1: (otherlv_5= RULE_ID )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:273:1: (otherlv_5= RULE_ID )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:274:3: otherlv_5= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineRule());
+                      	        }
+                              
+                    }
+                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachine507); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		newLeafNode(otherlv_5, grammarAccess.getStatemachineAccess().getFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0()); 
+                      	
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleStatemachine521); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getStatemachineAccess().getInitialStateKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:289:1: ( (otherlv_7= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:290:1: (otherlv_7= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:290:1: (otherlv_7= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:291:3: otherlv_7= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineRule());
+              	        }
+                      
+            }
+            otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachine541); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_7, grammarAccess.getStatemachineAccess().getInitialStateStatemachineStateCrossReference_5_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,20,FOLLOW_20_in_ruleStatemachine553); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_8, grammarAccess.getStatemachineAccess().getInitialEventKeyword_6());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:306:1: ( (otherlv_9= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:307:1: (otherlv_9= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:307:1: (otherlv_9= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:308:3: otherlv_9= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineRule());
+              	        }
+                      
+            }
+            otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachine573); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_9, grammarAccess.getStatemachineAccess().getInitialEventStatemachineEventCrossReference_7_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:319:2: (otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:319:4: otherlv_10= 'events' (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' )
+            {
+            otherlv_10=(Token)match(input,21,FOLLOW_21_in_ruleStatemachine586); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_10, grammarAccess.getStatemachineAccess().getEventsKeyword_8_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:323:1: (otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:323:3: otherlv_11= '{' ( (lv_events_12_0= ruleStatemachineEvent ) )* otherlv_13= '}'
+            {
+            otherlv_11=(Token)match(input,14,FOLLOW_14_in_ruleStatemachine599); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_11, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_8_1_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:327:1: ( (lv_events_12_0= ruleStatemachineEvent ) )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==24) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:328:1: (lv_events_12_0= ruleStatemachineEvent )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:328:1: (lv_events_12_0= ruleStatemachineEvent )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:329:3: lv_events_12_0= ruleStatemachineEvent
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineAccess().getEventsStatemachineEventParserRuleCall_8_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineEvent_in_ruleStatemachine620);
+            	    lv_events_12_0=ruleStatemachineEvent();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"events",
+            	              		lv_events_12_0, 
+            	              		"StatemachineEvent");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            otherlv_13=(Token)match(input,15,FOLLOW_15_in_ruleStatemachine633); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_13, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_8_1_2());
+                  
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:349:3: (otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:349:5: otherlv_14= 'controls' otherlv_15= '{' ( (lv_controls_16_0= ruleStatemachineControl ) )* otherlv_17= '}'
+            {
+            otherlv_14=(Token)match(input,22,FOLLOW_22_in_ruleStatemachine648); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_14, grammarAccess.getStatemachineAccess().getControlsKeyword_9_0());
+                  
+            }
+            otherlv_15=(Token)match(input,14,FOLLOW_14_in_ruleStatemachine660); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_15, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_9_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:357:1: ( (lv_controls_16_0= ruleStatemachineControl ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>=109 && LA8_0<=112)||LA8_0==117) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:358:1: (lv_controls_16_0= ruleStatemachineControl )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:358:1: (lv_controls_16_0= ruleStatemachineControl )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:359:3: lv_controls_16_0= ruleStatemachineControl
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineAccess().getControlsStatemachineControlParserRuleCall_9_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineControl_in_ruleStatemachine681);
+            	    lv_controls_16_0=ruleStatemachineControl();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"controls",
+            	              		lv_controls_16_0, 
+            	              		"StatemachineControl");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            otherlv_17=(Token)match(input,15,FOLLOW_15_in_ruleStatemachine694); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_17, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_9_3());
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:379:2: (otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:379:4: otherlv_18= 'states' otherlv_19= '{' ( (lv_states_20_0= ruleStatemachineState ) )* otherlv_21= '}'
+            {
+            otherlv_18=(Token)match(input,23,FOLLOW_23_in_ruleStatemachine708); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getStatemachineAccess().getStatesKeyword_10_0());
+                  
+            }
+            otherlv_19=(Token)match(input,14,FOLLOW_14_in_ruleStatemachine720); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_19, grammarAccess.getStatemachineAccess().getLeftCurlyBracketKeyword_10_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:387:1: ( (lv_states_20_0= ruleStatemachineState ) )*
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( (LA9_0==25) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:388:1: (lv_states_20_0= ruleStatemachineState )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:388:1: (lv_states_20_0= ruleStatemachineState )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:389:3: lv_states_20_0= ruleStatemachineState
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineAccess().getStatesStatemachineStateParserRuleCall_10_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineState_in_ruleStatemachine741);
+            	    lv_states_20_0=ruleStatemachineState();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"states",
+            	              		lv_states_20_0, 
+            	              		"StatemachineState");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+            otherlv_21=(Token)match(input,15,FOLLOW_15_in_ruleStatemachine754); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_21, grammarAccess.getStatemachineAccess().getRightCurlyBracketKeyword_10_3());
+                  
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachine"
+
+
+    // $ANTLR start "entryRuleStatemachineEvent"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:417:1: entryRuleStatemachineEvent returns [EObject current=null] : iv_ruleStatemachineEvent= ruleStatemachineEvent EOF ;
+    public final EObject entryRuleStatemachineEvent() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineEvent = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:418:2: (iv_ruleStatemachineEvent= ruleStatemachineEvent EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:419:2: iv_ruleStatemachineEvent= ruleStatemachineEvent EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineEventRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineEvent_in_entryRuleStatemachineEvent791);
+            iv_ruleStatemachineEvent=ruleStatemachineEvent();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineEvent; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineEvent801); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineEvent"
+
+
+    // $ANTLR start "ruleStatemachineEvent"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:426:1: ruleStatemachineEvent returns [EObject current=null] : (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineEvent() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:429:28: ( (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:430:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:430:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:430:3: otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleStatemachineEvent838); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineEventAccess().getEventKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:434:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:435:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:435:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:436:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineEvent855); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineEventAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineEventRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineEvent"
+
+
+    // $ANTLR start "entryRuleStatemachineState"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:460:1: entryRuleStatemachineState returns [EObject current=null] : iv_ruleStatemachineState= ruleStatemachineState EOF ;
+    public final EObject entryRuleStatemachineState() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineState = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:461:2: (iv_ruleStatemachineState= ruleStatemachineState EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:462:2: iv_ruleStatemachineState= ruleStatemachineState EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineStateRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineState_in_entryRuleStatemachineState896);
+            iv_ruleStatemachineState=ruleStatemachineState();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineState; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineState906); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineState"
+
+
+    // $ANTLR start "ruleStatemachineState"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:469:1: ruleStatemachineState returns [EObject current=null] : (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) ) otherlv_15= '}' ) ;
+    public final EObject ruleStatemachineState() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token lv_hasKeyOperation_13_0=null;
+        Token otherlv_15=null;
+        EObject lv_triggers_6_0 = null;
+
+        EObject lv_identity_9_0 = null;
+
+        EObject lv_keyOperation_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:472:28: ( (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) ) otherlv_15= '}' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:473:1: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) ) otherlv_15= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:473:1: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) ) otherlv_15= '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:473:3: otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) ) otherlv_15= '}'
+            {
+            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleStatemachineState943); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineStateAccess().getStateKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:477:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:478:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:478:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:479:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineState960); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getStatemachineStateAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineStateRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleStatemachineState977); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:499:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:501:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:501:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:502:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:505:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:506:3: ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:506:3: ( ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) ) )*
+            loop12:
+            do {
+                int alt12=4;
+                int LA12_0 = input.LA(1);
+
+                if ( LA12_0 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0) ) {
+                    alt12=1;
+                }
+                else if ( LA12_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1) ) {
+                    alt12=2;
+                }
+                else if ( LA12_0 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2) ) {
+                    alt12=3;
+                }
+
+
+                switch (alt12) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:508:4: ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:508:4: ({...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:509:5: {...}? => ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:509:114: ( ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:510:6: ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 0);
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:513:6: ({...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:513:7: {...}? => (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:513:16: (otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}' )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:513:18: otherlv_4= 'triggers' otherlv_5= '{' ( (lv_triggers_6_0= ruleStatemachineTrigger ) )* otherlv_7= '}'
+            	    {
+            	    otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleStatemachineState1035); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_4, grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0());
+            	          
+            	    }
+            	    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleStatemachineState1047); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_5, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:521:1: ( (lv_triggers_6_0= ruleStatemachineTrigger ) )*
+            	    loop10:
+            	    do {
+            	        int alt10=2;
+            	        int LA10_0 = input.LA(1);
+
+            	        if ( (LA10_0==31) ) {
+            	            alt10=1;
+            	        }
+
+
+            	        switch (alt10) {
+            	    	case 1 :
+            	    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:522:1: (lv_triggers_6_0= ruleStatemachineTrigger )
+            	    	    {
+            	    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:522:1: (lv_triggers_6_0= ruleStatemachineTrigger )
+            	    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:523:3: lv_triggers_6_0= ruleStatemachineTrigger
+            	    	    {
+            	    	    if ( state.backtracking==0 ) {
+            	    	       
+            	    	      	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getTriggersStatemachineTriggerParserRuleCall_3_0_2_0()); 
+            	    	      	    
+            	    	    }
+            	    	    pushFollow(FOLLOW_ruleStatemachineTrigger_in_ruleStatemachineState1068);
+            	    	    lv_triggers_6_0=ruleStatemachineTrigger();
+
+            	    	    state._fsp--;
+            	    	    if (state.failed) return current;
+            	    	    if ( state.backtracking==0 ) {
+
+            	    	      	        if (current==null) {
+            	    	      	            current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+            	    	      	        }
+            	    	             		add(
+            	    	             			current, 
+            	    	             			"triggers",
+            	    	              		lv_triggers_6_0, 
+            	    	              		"StatemachineTrigger");
+            	    	      	        afterParserOrEnumRuleCall();
+            	    	      	    
+            	    	    }
+
+            	    	    }
+
+
+            	    	    }
+            	    	    break;
+
+            	    	default :
+            	    	    break loop10;
+            	        }
+            	    } while (true);
+
+            	    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleStatemachineState1081); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_7, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:550:4: ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:550:4: ({...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:551:5: {...}? => ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:551:114: ( ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:552:6: ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 1);
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:555:6: ({...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:555:7: {...}? => (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:555:16: (otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:555:18: otherlv_8= 'identity' ( (lv_identity_9_0= ruleStatemachineOperation ) )
+            	    {
+            	    otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleStatemachineState1149); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_8, grammarAccess.getStatemachineStateAccess().getIdentityKeyword_3_1_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:559:1: ( (lv_identity_9_0= ruleStatemachineOperation ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:560:1: (lv_identity_9_0= ruleStatemachineOperation )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:560:1: (lv_identity_9_0= ruleStatemachineOperation )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:561:3: lv_identity_9_0= ruleStatemachineOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getIdentityStatemachineOperationParserRuleCall_3_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineOperation_in_ruleStatemachineState1170);
+            	    lv_identity_9_0=ruleStatemachineOperation();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"identity",
+            	              		lv_identity_9_0, 
+            	              		"StatemachineOperation");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:584:4: ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:584:4: ({...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:585:5: {...}? => ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "getUnorderedGroupHelper().canSelect(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:585:114: ( ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:586:6: ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3(), 2);
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:589:6: ({...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:589:7: {...}? => (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleStatemachineState", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:589:16: (otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )? )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:589:18: otherlv_10= 'keystroke' otherlv_11= '@' ( (otherlv_12= RULE_ID ) ) ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )?
+            	    {
+            	    otherlv_10=(Token)match(input,28,FOLLOW_28_in_ruleStatemachineState1238); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_10, grammarAccess.getStatemachineStateAccess().getKeystrokeKeyword_3_2_0());
+            	          
+            	    }
+            	    otherlv_11=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineState1250); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_11, grammarAccess.getStatemachineStateAccess().getCommercialAtKeyword_3_2_1());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:597:1: ( (otherlv_12= RULE_ID ) )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:598:1: (otherlv_12= RULE_ID )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:598:1: (otherlv_12= RULE_ID )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:599:3: otherlv_12= RULE_ID
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getStatemachineStateRule());
+            	      	        }
+            	              
+            	    }
+            	    otherlv_12=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineState1270); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      		newLeafNode(otherlv_12, grammarAccess.getStatemachineStateAccess().getKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0()); 
+            	      	
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:610:2: ( ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) ) )?
+            	    int alt11=2;
+            	    int LA11_0 = input.LA(1);
+
+            	    if ( (LA11_0==30) ) {
+            	        alt11=1;
+            	    }
+            	    switch (alt11) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:610:3: ( (lv_hasKeyOperation_13_0= 'and' ) ) ( (lv_keyOperation_14_0= ruleStatemachineOperation ) )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:610:3: ( (lv_hasKeyOperation_13_0= 'and' ) )
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:611:1: (lv_hasKeyOperation_13_0= 'and' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:611:1: (lv_hasKeyOperation_13_0= 'and' )
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:612:3: lv_hasKeyOperation_13_0= 'and'
+            	            {
+            	            lv_hasKeyOperation_13_0=(Token)match(input,30,FOLLOW_30_in_ruleStatemachineState1289); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                      newLeafNode(lv_hasKeyOperation_13_0, grammarAccess.getStatemachineStateAccess().getHasKeyOperationAndKeyword_3_2_3_0_0());
+            	                  
+            	            }
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElement(grammarAccess.getStatemachineStateRule());
+            	              	        }
+            	                     		setWithLastConsumed(current, "hasKeyOperation", true, "and");
+            	              	    
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:625:2: ( (lv_keyOperation_14_0= ruleStatemachineOperation ) )
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:626:1: (lv_keyOperation_14_0= ruleStatemachineOperation )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:626:1: (lv_keyOperation_14_0= ruleStatemachineOperation )
+            	            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:627:3: lv_keyOperation_14_0= ruleStatemachineOperation
+            	            {
+            	            if ( state.backtracking==0 ) {
+            	               
+            	              	        newCompositeNode(grammarAccess.getStatemachineStateAccess().getKeyOperationStatemachineOperationParserRuleCall_3_2_3_1_0()); 
+            	              	    
+            	            }
+            	            pushFollow(FOLLOW_ruleStatemachineOperation_in_ruleStatemachineState1323);
+            	            lv_keyOperation_14_0=ruleStatemachineOperation();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElementForParent(grammarAccess.getStatemachineStateRule());
+            	              	        }
+            	                     		set(
+            	                     			current, 
+            	                     			"keyOperation",
+            	                      		lv_keyOperation_14_0, 
+            	                      		"StatemachineOperation");
+            	              	        afterParserOrEnumRuleCall();
+            	              	    
+            	            }
+
+            	            }
+
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop12;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getStatemachineStateAccess().getUnorderedGroup_3());
+
+            }
+
+            otherlv_15=(Token)match(input,15,FOLLOW_15_in_ruleStatemachineState1378); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_15, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineState"
+
+
+    // $ANTLR start "entryRuleStatemachineTrigger"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:669:1: entryRuleStatemachineTrigger returns [EObject current=null] : iv_ruleStatemachineTrigger= ruleStatemachineTrigger EOF ;
+    public final EObject entryRuleStatemachineTrigger() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineTrigger = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:670:2: (iv_ruleStatemachineTrigger= ruleStatemachineTrigger EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:671:2: iv_ruleStatemachineTrigger= ruleStatemachineTrigger EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineTriggerRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineTrigger_in_entryRuleStatemachineTrigger1414);
+            iv_ruleStatemachineTrigger=ruleStatemachineTrigger();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineTrigger; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineTrigger1424); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineTrigger"
+
+
+    // $ANTLR start "ruleStatemachineTrigger"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:678:1: ruleStatemachineTrigger returns [EObject current=null] : ( () otherlv_1= 'trigger' ( (otherlv_2= RULE_ID ) )* (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )? otherlv_7= 'actions' ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '{' ( (lv_actions_11_0= ruleStatemachineAction ) )* otherlv_12= '}' ) ;
+    public final EObject ruleStatemachineTrigger() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token lv_hasTransition_8_0=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        EObject lv_guards_5_0 = null;
+
+        EObject lv_actions_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:681:28: ( ( () otherlv_1= 'trigger' ( (otherlv_2= RULE_ID ) )* (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )? otherlv_7= 'actions' ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '{' ( (lv_actions_11_0= ruleStatemachineAction ) )* otherlv_12= '}' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:682:1: ( () otherlv_1= 'trigger' ( (otherlv_2= RULE_ID ) )* (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )? otherlv_7= 'actions' ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '{' ( (lv_actions_11_0= ruleStatemachineAction ) )* otherlv_12= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:682:1: ( () otherlv_1= 'trigger' ( (otherlv_2= RULE_ID ) )* (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )? otherlv_7= 'actions' ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '{' ( (lv_actions_11_0= ruleStatemachineAction ) )* otherlv_12= '}' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:682:2: () otherlv_1= 'trigger' ( (otherlv_2= RULE_ID ) )* (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )? otherlv_7= 'actions' ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '{' ( (lv_actions_11_0= ruleStatemachineAction ) )* otherlv_12= '}'
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:682:2: ()
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:683:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getStatemachineTriggerAccess().getStatemachineTriggerAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleStatemachineTrigger1470); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineTriggerAccess().getTriggerKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:692:1: ( (otherlv_2= RULE_ID ) )*
+            loop13:
+            do {
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( (LA13_0==RULE_ID) ) {
+                    alt13=1;
+                }
+
+
+                switch (alt13) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:693:1: (otherlv_2= RULE_ID )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:693:1: (otherlv_2= RULE_ID )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:694:3: otherlv_2= RULE_ID
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+            	      	        }
+            	              
+            	    }
+            	    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineTrigger1490); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      		newLeafNode(otherlv_2, grammarAccess.getStatemachineTriggerAccess().getTriggersStatemachineEventCrossReference_2_0()); 
+            	      	
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop13;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:705:3: (otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}' )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==32) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:705:5: otherlv_3= 'guards' otherlv_4= '{' ( (lv_guards_5_0= ruleStatemachineGuard ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,32,FOLLOW_32_in_ruleStatemachineTrigger1504); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getStatemachineTriggerAccess().getGuardsKeyword_3_0());
+                          
+                    }
+                    otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleStatemachineTrigger1516); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_4, grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_3_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:713:1: ( (lv_guards_5_0= ruleStatemachineGuard ) )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( (LA14_0==86) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:714:1: (lv_guards_5_0= ruleStatemachineGuard )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:714:1: (lv_guards_5_0= ruleStatemachineGuard )
+                    	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:715:3: lv_guards_5_0= ruleStatemachineGuard
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getStatemachineTriggerAccess().getGuardsStatemachineGuardParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleStatemachineGuard_in_ruleStatemachineTrigger1537);
+                    	    lv_guards_5_0=ruleStatemachineGuard();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getStatemachineTriggerRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"guards",
+                    	              		lv_guards_5_0, 
+                    	              		"StatemachineGuard");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleStatemachineTrigger1550); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_7=(Token)match(input,33,FOLLOW_33_in_ruleStatemachineTrigger1564); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getStatemachineTriggerAccess().getActionsKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:739:1: ( ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) ) )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==34) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:739:2: ( (lv_hasTransition_8_0= 'transition' ) ) ( (otherlv_9= RULE_ID ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:739:2: ( (lv_hasTransition_8_0= 'transition' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:740:1: (lv_hasTransition_8_0= 'transition' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:740:1: (lv_hasTransition_8_0= 'transition' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:741:3: lv_hasTransition_8_0= 'transition'
+                    {
+                    lv_hasTransition_8_0=(Token)match(input,34,FOLLOW_34_in_ruleStatemachineTrigger1583); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasTransition_8_0, grammarAccess.getStatemachineTriggerAccess().getHasTransitionTransitionKeyword_5_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasTransition", true, "transition");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:754:2: ( (otherlv_9= RULE_ID ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:755:1: (otherlv_9= RULE_ID )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:755:1: (otherlv_9= RULE_ID )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:756:3: otherlv_9= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineTriggerRule());
+                      	        }
+                              
+                    }
+                    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineTrigger1616); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		newLeafNode(otherlv_9, grammarAccess.getStatemachineTriggerAccess().getTransitionStatemachineStateCrossReference_5_1_0()); 
+                      	
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleStatemachineTrigger1630); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_10, grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_6());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:771:1: ( (lv_actions_11_0= ruleStatemachineAction ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>=34 && LA17_0<=37)||(LA17_0>=44 && LA17_0<=47)||LA17_0==49||(LA17_0>=52 && LA17_0<=60)||(LA17_0>=63 && LA17_0<=66)||LA17_0==68||(LA17_0>=71 && LA17_0<=73)||LA17_0==76||LA17_0==78||(LA17_0>=82 && LA17_0<=83)||LA17_0==88||LA17_0==91||(LA17_0>=100 && LA17_0<=106)||LA17_0==108) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:772:1: (lv_actions_11_0= ruleStatemachineAction )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:772:1: (lv_actions_11_0= ruleStatemachineAction )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:773:3: lv_actions_11_0= ruleStatemachineAction
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineTriggerAccess().getActionsStatemachineActionParserRuleCall_7_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineAction_in_ruleStatemachineTrigger1651);
+            	    lv_actions_11_0=ruleStatemachineAction();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineTriggerRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"actions",
+            	              		lv_actions_11_0, 
+            	              		"StatemachineAction");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            otherlv_12=(Token)match(input,15,FOLLOW_15_in_ruleStatemachineTrigger1664); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_12, grammarAccess.getStatemachineTriggerAccess().getRightCurlyBracketKeyword_8());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineTrigger"
+
+
+    // $ANTLR start "entryRuleStatemachineAction"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:801:1: entryRuleStatemachineAction returns [EObject current=null] : iv_ruleStatemachineAction= ruleStatemachineAction EOF ;
+    public final EObject entryRuleStatemachineAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineAction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:802:2: (iv_ruleStatemachineAction= ruleStatemachineAction EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:803:2: iv_ruleStatemachineAction= ruleStatemachineAction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineAction_in_entryRuleStatemachineAction1700);
+            iv_ruleStatemachineAction=ruleStatemachineAction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineAction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineAction1710); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineAction"
+
+
+    // $ANTLR start "ruleStatemachineAction"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:810:1: ruleStatemachineAction returns [EObject current=null] : (this_StatemachineActionPeripheralBlinkRate_0= ruleStatemachineActionPeripheralBlinkRate | this_StatemachineActionPeripheralClear_1= ruleStatemachineActionPeripheralClear | this_StatemachineActionPeripheralCreateWindow_2= ruleStatemachineActionPeripheralCreateWindow | this_StatemachineActionPeripheralCursorType_3= ruleStatemachineActionPeripheralCursorType | this_StatemachineActionPeripheralDestroyWindow_4= ruleStatemachineActionPeripheralDestroyWindow | this_StatemachineActionPeripheralDeviceBrightness_5= ruleStatemachineActionPeripheralDeviceBrightness | this_StatemachineActionPeripheralDisplayBitmap_6= ruleStatemachineActionPeripheralDisplayBitmap | this_StatemachineActionPeripheralDisplayText_7= ruleStatemachineActionPeripheralDisplayText | this_StatemachineActionPeripheralDisplayTextAt_8= ruleStatemachineActionPeripheralDisplayTextAt | this_StatemachineActionPeripheralInterCharacterWait_9= ruleStatemachineActionPeripheralInterCharacterWait | this_StatemachineActionPeripheralMarqueeFormat_10= ruleStatemachineActionPeripheralMarqueeFormat | this_StatemachineActionPeripheralMarqueeRepeatWait_11= ruleStatemachineActionPeripheralMarqueeRepeatWait | this_StatemachineActionPeripheralMarqueeType_12= ruleStatemachineActionPeripheralMarqueeType | this_StatemachineActionPeripheralMarqueeUnitWait_13= ruleStatemachineActionPeripheralMarqueeUnitWait | this_StatemachineActionPeripheralScroll_14= ruleStatemachineActionPeripheralScroll | this_StatemachineActionPeripheralOpenDrawer_15= ruleStatemachineActionPeripheralOpenDrawer | this_StatemachineActionPeripheralPrintBarcode_16= ruleStatemachineActionPeripheralPrintBarcode | this_StatemachineActionPeripheralPrintBitmap_17= ruleStatemachineActionPeripheralPrintBitmap | this_StatemachineActionPeripheralPrintCut_18= ruleStatemachineActionPeripheralPrintCut | this_StatemachineActionPeripheralPrintNormal_19= ruleStatemachineActionPeripheralPrintNormal | this_StatemachineActionPeripheralPrintRegisterBitmap_20= ruleStatemachineActionPeripheralPrintRegisterBitmap | this_StatemachineActionPeripheralPTOpen_21= ruleStatemachineActionPeripheralPTOpen | this_StatemachineActionPeripheralPTClose_22= ruleStatemachineActionPeripheralPTClose | this_StatemachineActionPeripheralPTAcknowledge_23= ruleStatemachineActionPeripheralPTAcknowledge | this_StatemachineActionPeripheralPTReversal_24= ruleStatemachineActionPeripheralPTReversal | this_StatemachineActionPeripheralPTRegistration_25= ruleStatemachineActionPeripheralPTRegistration | this_StatemachineActionPeripheralPTAuthorization_26= ruleStatemachineActionPeripheralPTAuthorization | this_StatemachineActionPeripheralPrintReport_27= ruleStatemachineActionPeripheralPrintReport | this_StatemachineActionFieldSet_28= ruleStatemachineActionFieldSet | this_StatemachineActionFieldRemove_29= ruleStatemachineActionFieldRemove | this_StatemachineActionItemVisible_30= ruleStatemachineActionItemVisible | this_StatemachineActionItemInvisible_31= ruleStatemachineActionItemInvisible | this_StatemachineActionFieldClear_32= ruleStatemachineActionFieldClear | this_StatemachineActionButtonCaption_33= ruleStatemachineActionButtonCaption | this_StatemachineActionButtonImage_34= ruleStatemachineActionButtonImage | this_StatemachineActionDTOFind_35= ruleStatemachineActionDTOFind | this_StatemachineStorage_36= ruleStatemachineStorage | this_StatemachineActionScheduler_37= ruleStatemachineActionScheduler | this_StatemachineOperation_38= ruleStatemachineOperation | this_StatemachineActionConditionalTransition_39= ruleStatemachineActionConditionalTransition ) ;
+    public final EObject ruleStatemachineAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_StatemachineActionPeripheralBlinkRate_0 = null;
+
+        EObject this_StatemachineActionPeripheralClear_1 = null;
+
+        EObject this_StatemachineActionPeripheralCreateWindow_2 = null;
+
+        EObject this_StatemachineActionPeripheralCursorType_3 = null;
+
+        EObject this_StatemachineActionPeripheralDestroyWindow_4 = null;
+
+        EObject this_StatemachineActionPeripheralDeviceBrightness_5 = null;
+
+        EObject this_StatemachineActionPeripheralDisplayBitmap_6 = null;
+
+        EObject this_StatemachineActionPeripheralDisplayText_7 = null;
+
+        EObject this_StatemachineActionPeripheralDisplayTextAt_8 = null;
+
+        EObject this_StatemachineActionPeripheralInterCharacterWait_9 = null;
+
+        EObject this_StatemachineActionPeripheralMarqueeFormat_10 = null;
+
+        EObject this_StatemachineActionPeripheralMarqueeRepeatWait_11 = null;
+
+        EObject this_StatemachineActionPeripheralMarqueeType_12 = null;
+
+        EObject this_StatemachineActionPeripheralMarqueeUnitWait_13 = null;
+
+        EObject this_StatemachineActionPeripheralScroll_14 = null;
+
+        EObject this_StatemachineActionPeripheralOpenDrawer_15 = null;
+
+        EObject this_StatemachineActionPeripheralPrintBarcode_16 = null;
+
+        EObject this_StatemachineActionPeripheralPrintBitmap_17 = null;
+
+        EObject this_StatemachineActionPeripheralPrintCut_18 = null;
+
+        EObject this_StatemachineActionPeripheralPrintNormal_19 = null;
+
+        EObject this_StatemachineActionPeripheralPrintRegisterBitmap_20 = null;
+
+        EObject this_StatemachineActionPeripheralPTOpen_21 = null;
+
+        EObject this_StatemachineActionPeripheralPTClose_22 = null;
+
+        EObject this_StatemachineActionPeripheralPTAcknowledge_23 = null;
+
+        EObject this_StatemachineActionPeripheralPTReversal_24 = null;
+
+        EObject this_StatemachineActionPeripheralPTRegistration_25 = null;
+
+        EObject this_StatemachineActionPeripheralPTAuthorization_26 = null;
+
+        EObject this_StatemachineActionPeripheralPrintReport_27 = null;
+
+        EObject this_StatemachineActionFieldSet_28 = null;
+
+        EObject this_StatemachineActionFieldRemove_29 = null;
+
+        EObject this_StatemachineActionItemVisible_30 = null;
+
+        EObject this_StatemachineActionItemInvisible_31 = null;
+
+        EObject this_StatemachineActionFieldClear_32 = null;
+
+        EObject this_StatemachineActionButtonCaption_33 = null;
+
+        EObject this_StatemachineActionButtonImage_34 = null;
+
+        EObject this_StatemachineActionDTOFind_35 = null;
+
+        EObject this_StatemachineStorage_36 = null;
+
+        EObject this_StatemachineActionScheduler_37 = null;
+
+        EObject this_StatemachineOperation_38 = null;
+
+        EObject this_StatemachineActionConditionalTransition_39 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:813:28: ( (this_StatemachineActionPeripheralBlinkRate_0= ruleStatemachineActionPeripheralBlinkRate | this_StatemachineActionPeripheralClear_1= ruleStatemachineActionPeripheralClear | this_StatemachineActionPeripheralCreateWindow_2= ruleStatemachineActionPeripheralCreateWindow | this_StatemachineActionPeripheralCursorType_3= ruleStatemachineActionPeripheralCursorType | this_StatemachineActionPeripheralDestroyWindow_4= ruleStatemachineActionPeripheralDestroyWindow | this_StatemachineActionPeripheralDeviceBrightness_5= ruleStatemachineActionPeripheralDeviceBrightness | this_StatemachineActionPeripheralDisplayBitmap_6= ruleStatemachineActionPeripheralDisplayBitmap | this_StatemachineActionPeripheralDisplayText_7= ruleStatemachineActionPeripheralDisplayText | this_StatemachineActionPeripheralDisplayTextAt_8= ruleStatemachineActionPeripheralDisplayTextAt | this_StatemachineActionPeripheralInterCharacterWait_9= ruleStatemachineActionPeripheralInterCharacterWait | this_StatemachineActionPeripheralMarqueeFormat_10= ruleStatemachineActionPeripheralMarqueeFormat | this_StatemachineActionPeripheralMarqueeRepeatWait_11= ruleStatemachineActionPeripheralMarqueeRepeatWait | this_StatemachineActionPeripheralMarqueeType_12= ruleStatemachineActionPeripheralMarqueeType | this_StatemachineActionPeripheralMarqueeUnitWait_13= ruleStatemachineActionPeripheralMarqueeUnitWait | this_StatemachineActionPeripheralScroll_14= ruleStatemachineActionPeripheralScroll | this_StatemachineActionPeripheralOpenDrawer_15= ruleStatemachineActionPeripheralOpenDrawer | this_StatemachineActionPeripheralPrintBarcode_16= ruleStatemachineActionPeripheralPrintBarcode | this_StatemachineActionPeripheralPrintBitmap_17= ruleStatemachineActionPeripheralPrintBitmap | this_StatemachineActionPeripheralPrintCut_18= ruleStatemachineActionPeripheralPrintCut | this_StatemachineActionPeripheralPrintNormal_19= ruleStatemachineActionPeripheralPrintNormal | this_StatemachineActionPeripheralPrintRegisterBitmap_20= ruleStatemachineActionPeripheralPrintRegisterBitmap | this_StatemachineActionPeripheralPTOpen_21= ruleStatemachineActionPeripheralPTOpen | this_StatemachineActionPeripheralPTClose_22= ruleStatemachineActionPeripheralPTClose | this_StatemachineActionPeripheralPTAcknowledge_23= ruleStatemachineActionPeripheralPTAcknowledge | this_StatemachineActionPeripheralPTReversal_24= ruleStatemachineActionPeripheralPTReversal | this_StatemachineActionPeripheralPTRegistration_25= ruleStatemachineActionPeripheralPTRegistration | this_StatemachineActionPeripheralPTAuthorization_26= ruleStatemachineActionPeripheralPTAuthorization | this_StatemachineActionPeripheralPrintReport_27= ruleStatemachineActionPeripheralPrintReport | this_StatemachineActionFieldSet_28= ruleStatemachineActionFieldSet | this_StatemachineActionFieldRemove_29= ruleStatemachineActionFieldRemove | this_StatemachineActionItemVisible_30= ruleStatemachineActionItemVisible | this_StatemachineActionItemInvisible_31= ruleStatemachineActionItemInvisible | this_StatemachineActionFieldClear_32= ruleStatemachineActionFieldClear | this_StatemachineActionButtonCaption_33= ruleStatemachineActionButtonCaption | this_StatemachineActionButtonImage_34= ruleStatemachineActionButtonImage | this_StatemachineActionDTOFind_35= ruleStatemachineActionDTOFind | this_StatemachineStorage_36= ruleStatemachineStorage | this_StatemachineActionScheduler_37= ruleStatemachineActionScheduler | this_StatemachineOperation_38= ruleStatemachineOperation | this_StatemachineActionConditionalTransition_39= ruleStatemachineActionConditionalTransition ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:814:1: (this_StatemachineActionPeripheralBlinkRate_0= ruleStatemachineActionPeripheralBlinkRate | this_StatemachineActionPeripheralClear_1= ruleStatemachineActionPeripheralClear | this_StatemachineActionPeripheralCreateWindow_2= ruleStatemachineActionPeripheralCreateWindow | this_StatemachineActionPeripheralCursorType_3= ruleStatemachineActionPeripheralCursorType | this_StatemachineActionPeripheralDestroyWindow_4= ruleStatemachineActionPeripheralDestroyWindow | this_StatemachineActionPeripheralDeviceBrightness_5= ruleStatemachineActionPeripheralDeviceBrightness | this_StatemachineActionPeripheralDisplayBitmap_6= ruleStatemachineActionPeripheralDisplayBitmap | this_StatemachineActionPeripheralDisplayText_7= ruleStatemachineActionPeripheralDisplayText | this_StatemachineActionPeripheralDisplayTextAt_8= ruleStatemachineActionPeripheralDisplayTextAt | this_StatemachineActionPeripheralInterCharacterWait_9= ruleStatemachineActionPeripheralInterCharacterWait | this_StatemachineActionPeripheralMarqueeFormat_10= ruleStatemachineActionPeripheralMarqueeFormat | this_StatemachineActionPeripheralMarqueeRepeatWait_11= ruleStatemachineActionPeripheralMarqueeRepeatWait | this_StatemachineActionPeripheralMarqueeType_12= ruleStatemachineActionPeripheralMarqueeType | this_StatemachineActionPeripheralMarqueeUnitWait_13= ruleStatemachineActionPeripheralMarqueeUnitWait | this_StatemachineActionPeripheralScroll_14= ruleStatemachineActionPeripheralScroll | this_StatemachineActionPeripheralOpenDrawer_15= ruleStatemachineActionPeripheralOpenDrawer | this_StatemachineActionPeripheralPrintBarcode_16= ruleStatemachineActionPeripheralPrintBarcode | this_StatemachineActionPeripheralPrintBitmap_17= ruleStatemachineActionPeripheralPrintBitmap | this_StatemachineActionPeripheralPrintCut_18= ruleStatemachineActionPeripheralPrintCut | this_StatemachineActionPeripheralPrintNormal_19= ruleStatemachineActionPeripheralPrintNormal | this_StatemachineActionPeripheralPrintRegisterBitmap_20= ruleStatemachineActionPeripheralPrintRegisterBitmap | this_StatemachineActionPeripheralPTOpen_21= ruleStatemachineActionPeripheralPTOpen | this_StatemachineActionPeripheralPTClose_22= ruleStatemachineActionPeripheralPTClose | this_StatemachineActionPeripheralPTAcknowledge_23= ruleStatemachineActionPeripheralPTAcknowledge | this_StatemachineActionPeripheralPTReversal_24= ruleStatemachineActionPeripheralPTReversal | this_StatemachineActionPeripheralPTRegistration_25= ruleStatemachineActionPeripheralPTRegistration | this_StatemachineActionPeripheralPTAuthorization_26= ruleStatemachineActionPeripheralPTAuthorization | this_StatemachineActionPeripheralPrintReport_27= ruleStatemachineActionPeripheralPrintReport | this_StatemachineActionFieldSet_28= ruleStatemachineActionFieldSet | this_StatemachineActionFieldRemove_29= ruleStatemachineActionFieldRemove | this_StatemachineActionItemVisible_30= ruleStatemachineActionItemVisible | this_StatemachineActionItemInvisible_31= ruleStatemachineActionItemInvisible | this_StatemachineActionFieldClear_32= ruleStatemachineActionFieldClear | this_StatemachineActionButtonCaption_33= ruleStatemachineActionButtonCaption | this_StatemachineActionButtonImage_34= ruleStatemachineActionButtonImage | this_StatemachineActionDTOFind_35= ruleStatemachineActionDTOFind | this_StatemachineStorage_36= ruleStatemachineStorage | this_StatemachineActionScheduler_37= ruleStatemachineActionScheduler | this_StatemachineOperation_38= ruleStatemachineOperation | this_StatemachineActionConditionalTransition_39= ruleStatemachineActionConditionalTransition )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:814:1: (this_StatemachineActionPeripheralBlinkRate_0= ruleStatemachineActionPeripheralBlinkRate | this_StatemachineActionPeripheralClear_1= ruleStatemachineActionPeripheralClear | this_StatemachineActionPeripheralCreateWindow_2= ruleStatemachineActionPeripheralCreateWindow | this_StatemachineActionPeripheralCursorType_3= ruleStatemachineActionPeripheralCursorType | this_StatemachineActionPeripheralDestroyWindow_4= ruleStatemachineActionPeripheralDestroyWindow | this_StatemachineActionPeripheralDeviceBrightness_5= ruleStatemachineActionPeripheralDeviceBrightness | this_StatemachineActionPeripheralDisplayBitmap_6= ruleStatemachineActionPeripheralDisplayBitmap | this_StatemachineActionPeripheralDisplayText_7= ruleStatemachineActionPeripheralDisplayText | this_StatemachineActionPeripheralDisplayTextAt_8= ruleStatemachineActionPeripheralDisplayTextAt | this_StatemachineActionPeripheralInterCharacterWait_9= ruleStatemachineActionPeripheralInterCharacterWait | this_StatemachineActionPeripheralMarqueeFormat_10= ruleStatemachineActionPeripheralMarqueeFormat | this_StatemachineActionPeripheralMarqueeRepeatWait_11= ruleStatemachineActionPeripheralMarqueeRepeatWait | this_StatemachineActionPeripheralMarqueeType_12= ruleStatemachineActionPeripheralMarqueeType | this_StatemachineActionPeripheralMarqueeUnitWait_13= ruleStatemachineActionPeripheralMarqueeUnitWait | this_StatemachineActionPeripheralScroll_14= ruleStatemachineActionPeripheralScroll | this_StatemachineActionPeripheralOpenDrawer_15= ruleStatemachineActionPeripheralOpenDrawer | this_StatemachineActionPeripheralPrintBarcode_16= ruleStatemachineActionPeripheralPrintBarcode | this_StatemachineActionPeripheralPrintBitmap_17= ruleStatemachineActionPeripheralPrintBitmap | this_StatemachineActionPeripheralPrintCut_18= ruleStatemachineActionPeripheralPrintCut | this_StatemachineActionPeripheralPrintNormal_19= ruleStatemachineActionPeripheralPrintNormal | this_StatemachineActionPeripheralPrintRegisterBitmap_20= ruleStatemachineActionPeripheralPrintRegisterBitmap | this_StatemachineActionPeripheralPTOpen_21= ruleStatemachineActionPeripheralPTOpen | this_StatemachineActionPeripheralPTClose_22= ruleStatemachineActionPeripheralPTClose | this_StatemachineActionPeripheralPTAcknowledge_23= ruleStatemachineActionPeripheralPTAcknowledge | this_StatemachineActionPeripheralPTReversal_24= ruleStatemachineActionPeripheralPTReversal | this_StatemachineActionPeripheralPTRegistration_25= ruleStatemachineActionPeripheralPTRegistration | this_StatemachineActionPeripheralPTAuthorization_26= ruleStatemachineActionPeripheralPTAuthorization | this_StatemachineActionPeripheralPrintReport_27= ruleStatemachineActionPeripheralPrintReport | this_StatemachineActionFieldSet_28= ruleStatemachineActionFieldSet | this_StatemachineActionFieldRemove_29= ruleStatemachineActionFieldRemove | this_StatemachineActionItemVisible_30= ruleStatemachineActionItemVisible | this_StatemachineActionItemInvisible_31= ruleStatemachineActionItemInvisible | this_StatemachineActionFieldClear_32= ruleStatemachineActionFieldClear | this_StatemachineActionButtonCaption_33= ruleStatemachineActionButtonCaption | this_StatemachineActionButtonImage_34= ruleStatemachineActionButtonImage | this_StatemachineActionDTOFind_35= ruleStatemachineActionDTOFind | this_StatemachineStorage_36= ruleStatemachineStorage | this_StatemachineActionScheduler_37= ruleStatemachineActionScheduler | this_StatemachineOperation_38= ruleStatemachineOperation | this_StatemachineActionConditionalTransition_39= ruleStatemachineActionConditionalTransition )
+            int alt18=40;
+            switch ( input.LA(1) ) {
+            case 35:
+                {
+                alt18=1;
+                }
+                break;
+            case 36:
+                {
+                alt18=2;
+                }
+                break;
+            case 37:
+                {
+                alt18=3;
+                }
+                break;
+            case 44:
+                {
+                alt18=4;
+                }
+                break;
+            case 45:
+                {
+                alt18=5;
+                }
+                break;
+            case 46:
+                {
+                alt18=6;
+                }
+                break;
+            case 47:
+                {
+                alt18=7;
+                }
+                break;
+            case 49:
+                {
+                alt18=8;
+                }
+                break;
+            case 52:
+                {
+                alt18=9;
+                }
+                break;
+            case 53:
+                {
+                alt18=10;
+                }
+                break;
+            case 54:
+                {
+                alt18=11;
+                }
+                break;
+            case 55:
+                {
+                alt18=12;
+                }
+                break;
+            case 56:
+                {
+                alt18=13;
+                }
+                break;
+            case 57:
+                {
+                alt18=14;
+                }
+                break;
+            case 58:
+                {
+                alt18=15;
+                }
+                break;
+            case 59:
+                {
+                alt18=16;
+                }
+                break;
+            case 60:
+                {
+                alt18=17;
+                }
+                break;
+            case 63:
+                {
+                alt18=18;
+                }
+                break;
+            case 64:
+                {
+                alt18=19;
+                }
+                break;
+            case 65:
+                {
+                alt18=20;
+                }
+                break;
+            case 66:
+                {
+                alt18=21;
+                }
+                break;
+            case 68:
+                {
+                alt18=22;
+                }
+                break;
+            case 71:
+                {
+                alt18=23;
+                }
+                break;
+            case 72:
+                {
+                alt18=24;
+                }
+                break;
+            case 73:
+                {
+                alt18=25;
+                }
+                break;
+            case 76:
+                {
+                alt18=26;
+                }
+                break;
+            case 78:
+                {
+                alt18=27;
+                }
+                break;
+            case 82:
+                {
+                alt18=28;
+                }
+                break;
+            case 100:
+                {
+                alt18=29;
+                }
+                break;
+            case 102:
+                {
+                alt18=30;
+                }
+                break;
+            case 103:
+                {
+                alt18=31;
+                }
+                break;
+            case 104:
+                {
+                alt18=32;
+                }
+                break;
+            case 101:
+                {
+                alt18=33;
+                }
+                break;
+            case 88:
+                {
+                alt18=34;
+                }
+                break;
+            case 105:
+                {
+                alt18=35;
+                }
+                break;
+            case 106:
+                {
+                alt18=36;
+                }
+                break;
+            case 91:
+                {
+                alt18=37;
+                }
+                break;
+            case 108:
+                {
+                alt18=38;
+                }
+                break;
+            case 83:
+                {
+                alt18=39;
+                }
+                break;
+            case 34:
+                {
+                alt18=40;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt18) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:815:5: this_StatemachineActionPeripheralBlinkRate_0= ruleStatemachineActionPeripheralBlinkRate
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralBlinkRateParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralBlinkRate_in_ruleStatemachineAction1757);
+                    this_StatemachineActionPeripheralBlinkRate_0=ruleStatemachineActionPeripheralBlinkRate();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralBlinkRate_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:825:5: this_StatemachineActionPeripheralClear_1= ruleStatemachineActionPeripheralClear
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralClearParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralClear_in_ruleStatemachineAction1784);
+                    this_StatemachineActionPeripheralClear_1=ruleStatemachineActionPeripheralClear();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralClear_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:835:5: this_StatemachineActionPeripheralCreateWindow_2= ruleStatemachineActionPeripheralCreateWindow
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCreateWindowParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralCreateWindow_in_ruleStatemachineAction1811);
+                    this_StatemachineActionPeripheralCreateWindow_2=ruleStatemachineActionPeripheralCreateWindow();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralCreateWindow_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:845:5: this_StatemachineActionPeripheralCursorType_3= ruleStatemachineActionPeripheralCursorType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralCursorTypeParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralCursorType_in_ruleStatemachineAction1838);
+                    this_StatemachineActionPeripheralCursorType_3=ruleStatemachineActionPeripheralCursorType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralCursorType_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:855:5: this_StatemachineActionPeripheralDestroyWindow_4= ruleStatemachineActionPeripheralDestroyWindow
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDestroyWindowParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralDestroyWindow_in_ruleStatemachineAction1865);
+                    this_StatemachineActionPeripheralDestroyWindow_4=ruleStatemachineActionPeripheralDestroyWindow();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralDestroyWindow_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:865:5: this_StatemachineActionPeripheralDeviceBrightness_5= ruleStatemachineActionPeripheralDeviceBrightness
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralDeviceBrightness_in_ruleStatemachineAction1892);
+                    this_StatemachineActionPeripheralDeviceBrightness_5=ruleStatemachineActionPeripheralDeviceBrightness();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralDeviceBrightness_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:875:5: this_StatemachineActionPeripheralDisplayBitmap_6= ruleStatemachineActionPeripheralDisplayBitmap
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayBitmapParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayBitmap_in_ruleStatemachineAction1919);
+                    this_StatemachineActionPeripheralDisplayBitmap_6=ruleStatemachineActionPeripheralDisplayBitmap();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralDisplayBitmap_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:885:5: this_StatemachineActionPeripheralDisplayText_7= ruleStatemachineActionPeripheralDisplayText
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayText_in_ruleStatemachineAction1946);
+                    this_StatemachineActionPeripheralDisplayText_7=ruleStatemachineActionPeripheralDisplayText();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralDisplayText_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:895:5: this_StatemachineActionPeripheralDisplayTextAt_8= ruleStatemachineActionPeripheralDisplayTextAt
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralDisplayTextAtParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayTextAt_in_ruleStatemachineAction1973);
+                    this_StatemachineActionPeripheralDisplayTextAt_8=ruleStatemachineActionPeripheralDisplayTextAt();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralDisplayTextAt_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:905:5: this_StatemachineActionPeripheralInterCharacterWait_9= ruleStatemachineActionPeripheralInterCharacterWait
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralInterCharacterWait_in_ruleStatemachineAction2000);
+                    this_StatemachineActionPeripheralInterCharacterWait_9=ruleStatemachineActionPeripheralInterCharacterWait();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralInterCharacterWait_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:915:5: this_StatemachineActionPeripheralMarqueeFormat_10= ruleStatemachineActionPeripheralMarqueeFormat
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeFormatParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeFormat_in_ruleStatemachineAction2027);
+                    this_StatemachineActionPeripheralMarqueeFormat_10=ruleStatemachineActionPeripheralMarqueeFormat();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralMarqueeFormat_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:925:5: this_StatemachineActionPeripheralMarqueeRepeatWait_11= ruleStatemachineActionPeripheralMarqueeRepeatWait
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeRepeatWait_in_ruleStatemachineAction2054);
+                    this_StatemachineActionPeripheralMarqueeRepeatWait_11=ruleStatemachineActionPeripheralMarqueeRepeatWait();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralMarqueeRepeatWait_11; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:935:5: this_StatemachineActionPeripheralMarqueeType_12= ruleStatemachineActionPeripheralMarqueeType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeTypeParserRuleCall_12()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeType_in_ruleStatemachineAction2081);
+                    this_StatemachineActionPeripheralMarqueeType_12=ruleStatemachineActionPeripheralMarqueeType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralMarqueeType_12; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:945:5: this_StatemachineActionPeripheralMarqueeUnitWait_13= ruleStatemachineActionPeripheralMarqueeUnitWait
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeUnitWait_in_ruleStatemachineAction2108);
+                    this_StatemachineActionPeripheralMarqueeUnitWait_13=ruleStatemachineActionPeripheralMarqueeUnitWait();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralMarqueeUnitWait_13; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:955:5: this_StatemachineActionPeripheralScroll_14= ruleStatemachineActionPeripheralScroll
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralScrollParserRuleCall_14()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralScroll_in_ruleStatemachineAction2135);
+                    this_StatemachineActionPeripheralScroll_14=ruleStatemachineActionPeripheralScroll();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralScroll_14; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:965:5: this_StatemachineActionPeripheralOpenDrawer_15= ruleStatemachineActionPeripheralOpenDrawer
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralOpenDrawerParserRuleCall_15()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralOpenDrawer_in_ruleStatemachineAction2162);
+                    this_StatemachineActionPeripheralOpenDrawer_15=ruleStatemachineActionPeripheralOpenDrawer();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralOpenDrawer_15; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:975:5: this_StatemachineActionPeripheralPrintBarcode_16= ruleStatemachineActionPeripheralPrintBarcode
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBarcodeParserRuleCall_16()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintBarcode_in_ruleStatemachineAction2189);
+                    this_StatemachineActionPeripheralPrintBarcode_16=ruleStatemachineActionPeripheralPrintBarcode();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintBarcode_16; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 18 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:985:5: this_StatemachineActionPeripheralPrintBitmap_17= ruleStatemachineActionPeripheralPrintBitmap
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintBitmapParserRuleCall_17()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintBitmap_in_ruleStatemachineAction2216);
+                    this_StatemachineActionPeripheralPrintBitmap_17=ruleStatemachineActionPeripheralPrintBitmap();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintBitmap_17; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 19 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:995:5: this_StatemachineActionPeripheralPrintCut_18= ruleStatemachineActionPeripheralPrintCut
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintCutParserRuleCall_18()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintCut_in_ruleStatemachineAction2243);
+                    this_StatemachineActionPeripheralPrintCut_18=ruleStatemachineActionPeripheralPrintCut();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintCut_18; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 20 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1005:5: this_StatemachineActionPeripheralPrintNormal_19= ruleStatemachineActionPeripheralPrintNormal
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintNormalParserRuleCall_19()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintNormal_in_ruleStatemachineAction2270);
+                    this_StatemachineActionPeripheralPrintNormal_19=ruleStatemachineActionPeripheralPrintNormal();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintNormal_19; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 21 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1015:5: this_StatemachineActionPeripheralPrintRegisterBitmap_20= ruleStatemachineActionPeripheralPrintRegisterBitmap
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintRegisterBitmap_in_ruleStatemachineAction2297);
+                    this_StatemachineActionPeripheralPrintRegisterBitmap_20=ruleStatemachineActionPeripheralPrintRegisterBitmap();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintRegisterBitmap_20; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 22 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1025:5: this_StatemachineActionPeripheralPTOpen_21= ruleStatemachineActionPeripheralPTOpen
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTOpenParserRuleCall_21()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTOpen_in_ruleStatemachineAction2324);
+                    this_StatemachineActionPeripheralPTOpen_21=ruleStatemachineActionPeripheralPTOpen();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTOpen_21; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 23 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1035:5: this_StatemachineActionPeripheralPTClose_22= ruleStatemachineActionPeripheralPTClose
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTCloseParserRuleCall_22()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTClose_in_ruleStatemachineAction2351);
+                    this_StatemachineActionPeripheralPTClose_22=ruleStatemachineActionPeripheralPTClose();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTClose_22; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 24 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1045:5: this_StatemachineActionPeripheralPTAcknowledge_23= ruleStatemachineActionPeripheralPTAcknowledge
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTAcknowledge_in_ruleStatemachineAction2378);
+                    this_StatemachineActionPeripheralPTAcknowledge_23=ruleStatemachineActionPeripheralPTAcknowledge();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTAcknowledge_23; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 25 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1055:5: this_StatemachineActionPeripheralPTReversal_24= ruleStatemachineActionPeripheralPTReversal
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTReversalParserRuleCall_24()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTReversal_in_ruleStatemachineAction2405);
+                    this_StatemachineActionPeripheralPTReversal_24=ruleStatemachineActionPeripheralPTReversal();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTReversal_24; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 26 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1065:5: this_StatemachineActionPeripheralPTRegistration_25= ruleStatemachineActionPeripheralPTRegistration
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTRegistrationParserRuleCall_25()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTRegistration_in_ruleStatemachineAction2432);
+                    this_StatemachineActionPeripheralPTRegistration_25=ruleStatemachineActionPeripheralPTRegistration();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTRegistration_25; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 27 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1075:5: this_StatemachineActionPeripheralPTAuthorization_26= ruleStatemachineActionPeripheralPTAuthorization
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPTAuthorizationParserRuleCall_26()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTAuthorization_in_ruleStatemachineAction2459);
+                    this_StatemachineActionPeripheralPTAuthorization_26=ruleStatemachineActionPeripheralPTAuthorization();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTAuthorization_26; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 28 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1085:5: this_StatemachineActionPeripheralPrintReport_27= ruleStatemachineActionPeripheralPrintReport
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionPeripheralPrintReportParserRuleCall_27()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintReport_in_ruleStatemachineAction2486);
+                    this_StatemachineActionPeripheralPrintReport_27=ruleStatemachineActionPeripheralPrintReport();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPrintReport_27; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 29 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1095:5: this_StatemachineActionFieldSet_28= ruleStatemachineActionFieldSet
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldSetParserRuleCall_28()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSet_in_ruleStatemachineAction2513);
+                    this_StatemachineActionFieldSet_28=ruleStatemachineActionFieldSet();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSet_28; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 30 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1105:5: this_StatemachineActionFieldRemove_29= ruleStatemachineActionFieldRemove
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldRemoveParserRuleCall_29()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldRemove_in_ruleStatemachineAction2540);
+                    this_StatemachineActionFieldRemove_29=ruleStatemachineActionFieldRemove();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldRemove_29; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 31 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1115:5: this_StatemachineActionItemVisible_30= ruleStatemachineActionItemVisible
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemVisibleParserRuleCall_30()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionItemVisible_in_ruleStatemachineAction2567);
+                    this_StatemachineActionItemVisible_30=ruleStatemachineActionItemVisible();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionItemVisible_30; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 32 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1125:5: this_StatemachineActionItemInvisible_31= ruleStatemachineActionItemInvisible
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionItemInvisibleParserRuleCall_31()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionItemInvisible_in_ruleStatemachineAction2594);
+                    this_StatemachineActionItemInvisible_31=ruleStatemachineActionItemInvisible();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionItemInvisible_31; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 33 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1135:5: this_StatemachineActionFieldClear_32= ruleStatemachineActionFieldClear
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionFieldClearParserRuleCall_32()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldClear_in_ruleStatemachineAction2621);
+                    this_StatemachineActionFieldClear_32=ruleStatemachineActionFieldClear();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldClear_32; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 34 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1145:5: this_StatemachineActionButtonCaption_33= ruleStatemachineActionButtonCaption
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonCaptionParserRuleCall_33()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionButtonCaption_in_ruleStatemachineAction2648);
+                    this_StatemachineActionButtonCaption_33=ruleStatemachineActionButtonCaption();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionButtonCaption_33; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 35 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1155:5: this_StatemachineActionButtonImage_34= ruleStatemachineActionButtonImage
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionButtonImageParserRuleCall_34()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionButtonImage_in_ruleStatemachineAction2675);
+                    this_StatemachineActionButtonImage_34=ruleStatemachineActionButtonImage();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionButtonImage_34; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 36 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1165:5: this_StatemachineActionDTOFind_35= ruleStatemachineActionDTOFind
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionDTOFindParserRuleCall_35()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionDTOFind_in_ruleStatemachineAction2702);
+                    this_StatemachineActionDTOFind_35=ruleStatemachineActionDTOFind();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionDTOFind_35; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 37 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1175:5: this_StatemachineStorage_36= ruleStatemachineStorage
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineStorageParserRuleCall_36()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineStorage_in_ruleStatemachineAction2729);
+                    this_StatemachineStorage_36=ruleStatemachineStorage();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineStorage_36; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 38 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1185:5: this_StatemachineActionScheduler_37= ruleStatemachineActionScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionSchedulerParserRuleCall_37()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionScheduler_in_ruleStatemachineAction2756);
+                    this_StatemachineActionScheduler_37=ruleStatemachineActionScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionScheduler_37; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 39 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1195:5: this_StatemachineOperation_38= ruleStatemachineOperation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineOperationParserRuleCall_38()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineOperation_in_ruleStatemachineAction2783);
+                    this_StatemachineOperation_38=ruleStatemachineOperation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineOperation_38; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 40 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1205:5: this_StatemachineActionConditionalTransition_39= ruleStatemachineActionConditionalTransition
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionAccess().getStatemachineActionConditionalTransitionParserRuleCall_39()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionConditionalTransition_in_ruleStatemachineAction2810);
+                    this_StatemachineActionConditionalTransition_39=ruleStatemachineActionConditionalTransition();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionConditionalTransition_39; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineAction"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralBlinkRate"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1221:1: entryRuleStatemachineActionPeripheralBlinkRate returns [EObject current=null] : iv_ruleStatemachineActionPeripheralBlinkRate= ruleStatemachineActionPeripheralBlinkRate EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralBlinkRate() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralBlinkRate = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1222:2: (iv_ruleStatemachineActionPeripheralBlinkRate= ruleStatemachineActionPeripheralBlinkRate EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1223:2: iv_ruleStatemachineActionPeripheralBlinkRate= ruleStatemachineActionPeripheralBlinkRate EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralBlinkRateRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralBlinkRate_in_entryRuleStatemachineActionPeripheralBlinkRate2845);
+            iv_ruleStatemachineActionPeripheralBlinkRate=ruleStatemachineActionPeripheralBlinkRate();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralBlinkRate; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralBlinkRate2855); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralBlinkRate"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralBlinkRate"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1230:1: ruleStatemachineActionPeripheralBlinkRate returns [EObject current=null] : (otherlv_0= 'blinkRate' ( (lv_blinkRate_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralBlinkRate() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_blinkRate_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1233:28: ( (otherlv_0= 'blinkRate' ( (lv_blinkRate_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1234:1: (otherlv_0= 'blinkRate' ( (lv_blinkRate_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1234:1: (otherlv_0= 'blinkRate' ( (lv_blinkRate_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1234:3: otherlv_0= 'blinkRate' ( (lv_blinkRate_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleStatemachineActionPeripheralBlinkRate2892); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1238:1: ( (lv_blinkRate_1_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1239:1: (lv_blinkRate_1_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1239:1: (lv_blinkRate_1_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1240:3: lv_blinkRate_1_0= RULE_INT
+            {
+            lv_blinkRate_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralBlinkRate2909); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_blinkRate_1_0, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateINTTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralBlinkRateRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"blinkRate",
+                      		lv_blinkRate_1_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralBlinkRate2926); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1260:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1261:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1261:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1262:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralBlinkRateRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralBlinkRate2946); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralBlinkRate"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralClear"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1281:1: entryRuleStatemachineActionPeripheralClear returns [EObject current=null] : iv_ruleStatemachineActionPeripheralClear= ruleStatemachineActionPeripheralClear EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralClear() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralClear = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1282:2: (iv_ruleStatemachineActionPeripheralClear= ruleStatemachineActionPeripheralClear EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1283:2: iv_ruleStatemachineActionPeripheralClear= ruleStatemachineActionPeripheralClear EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralClearRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralClear_in_entryRuleStatemachineActionPeripheralClear2982);
+            iv_ruleStatemachineActionPeripheralClear=ruleStatemachineActionPeripheralClear();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralClear; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralClear2992); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralClear"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralClear"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1290:1: ruleStatemachineActionPeripheralClear returns [EObject current=null] : (otherlv_0= 'clearDevice' ( (otherlv_1= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralClear() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1293:28: ( (otherlv_0= 'clearDevice' ( (otherlv_1= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1294:1: (otherlv_0= 'clearDevice' ( (otherlv_1= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1294:1: (otherlv_0= 'clearDevice' ( (otherlv_1= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1294:3: otherlv_0= 'clearDevice' ( (otherlv_1= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleStatemachineActionPeripheralClear3029); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralClearAccess().getClearDeviceKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1298:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1299:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1299:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1300:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralClearRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralClear3049); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralClearAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralClear"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralCreateWindow"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1319:1: entryRuleStatemachineActionPeripheralCreateWindow returns [EObject current=null] : iv_ruleStatemachineActionPeripheralCreateWindow= ruleStatemachineActionPeripheralCreateWindow EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralCreateWindow() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralCreateWindow = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1320:2: (iv_ruleStatemachineActionPeripheralCreateWindow= ruleStatemachineActionPeripheralCreateWindow EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1321:2: iv_ruleStatemachineActionPeripheralCreateWindow= ruleStatemachineActionPeripheralCreateWindow EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralCreateWindowRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralCreateWindow_in_entryRuleStatemachineActionPeripheralCreateWindow3085);
+            iv_ruleStatemachineActionPeripheralCreateWindow=ruleStatemachineActionPeripheralCreateWindow();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralCreateWindow; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralCreateWindow3095); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralCreateWindow"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralCreateWindow"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1328:1: ruleStatemachineActionPeripheralCreateWindow returns [EObject current=null] : (otherlv_0= 'createWindow' otherlv_1= 'row' ( (lv_viewportRow_2_0= RULE_INT ) ) otherlv_3= 'column' ( (lv_viewportColumn_4_0= RULE_INT ) ) otherlv_5= 'height' ( (lv_viewportHeight_6_0= RULE_INT ) ) otherlv_7= 'width' ( (lv_viewportWidth_8_0= RULE_INT ) ) otherlv_9= 'windowHeight' ( (lv_windowHeight_10_0= RULE_INT ) ) otherlv_11= 'windowWidth' ( (lv_windowWidth_12_0= RULE_INT ) ) otherlv_13= '@' ( (otherlv_14= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralCreateWindow() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_viewportRow_2_0=null;
+        Token otherlv_3=null;
+        Token lv_viewportColumn_4_0=null;
+        Token otherlv_5=null;
+        Token lv_viewportHeight_6_0=null;
+        Token otherlv_7=null;
+        Token lv_viewportWidth_8_0=null;
+        Token otherlv_9=null;
+        Token lv_windowHeight_10_0=null;
+        Token otherlv_11=null;
+        Token lv_windowWidth_12_0=null;
+        Token otherlv_13=null;
+        Token otherlv_14=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1331:28: ( (otherlv_0= 'createWindow' otherlv_1= 'row' ( (lv_viewportRow_2_0= RULE_INT ) ) otherlv_3= 'column' ( (lv_viewportColumn_4_0= RULE_INT ) ) otherlv_5= 'height' ( (lv_viewportHeight_6_0= RULE_INT ) ) otherlv_7= 'width' ( (lv_viewportWidth_8_0= RULE_INT ) ) otherlv_9= 'windowHeight' ( (lv_windowHeight_10_0= RULE_INT ) ) otherlv_11= 'windowWidth' ( (lv_windowWidth_12_0= RULE_INT ) ) otherlv_13= '@' ( (otherlv_14= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1332:1: (otherlv_0= 'createWindow' otherlv_1= 'row' ( (lv_viewportRow_2_0= RULE_INT ) ) otherlv_3= 'column' ( (lv_viewportColumn_4_0= RULE_INT ) ) otherlv_5= 'height' ( (lv_viewportHeight_6_0= RULE_INT ) ) otherlv_7= 'width' ( (lv_viewportWidth_8_0= RULE_INT ) ) otherlv_9= 'windowHeight' ( (lv_windowHeight_10_0= RULE_INT ) ) otherlv_11= 'windowWidth' ( (lv_windowWidth_12_0= RULE_INT ) ) otherlv_13= '@' ( (otherlv_14= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1332:1: (otherlv_0= 'createWindow' otherlv_1= 'row' ( (lv_viewportRow_2_0= RULE_INT ) ) otherlv_3= 'column' ( (lv_viewportColumn_4_0= RULE_INT ) ) otherlv_5= 'height' ( (lv_viewportHeight_6_0= RULE_INT ) ) otherlv_7= 'width' ( (lv_viewportWidth_8_0= RULE_INT ) ) otherlv_9= 'windowHeight' ( (lv_windowHeight_10_0= RULE_INT ) ) otherlv_11= 'windowWidth' ( (lv_windowWidth_12_0= RULE_INT ) ) otherlv_13= '@' ( (otherlv_14= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1332:3: otherlv_0= 'createWindow' otherlv_1= 'row' ( (lv_viewportRow_2_0= RULE_INT ) ) otherlv_3= 'column' ( (lv_viewportColumn_4_0= RULE_INT ) ) otherlv_5= 'height' ( (lv_viewportHeight_6_0= RULE_INT ) ) otherlv_7= 'width' ( (lv_viewportWidth_8_0= RULE_INT ) ) otherlv_9= 'windowHeight' ( (lv_windowHeight_10_0= RULE_INT ) ) otherlv_11= 'windowWidth' ( (lv_windowWidth_12_0= RULE_INT ) ) otherlv_13= '@' ( (otherlv_14= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleStatemachineActionPeripheralCreateWindow3132); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getCreateWindowKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,38,FOLLOW_38_in_ruleStatemachineActionPeripheralCreateWindow3144); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getRowKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1340:1: ( (lv_viewportRow_2_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1341:1: (lv_viewportRow_2_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1341:1: (lv_viewportRow_2_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1342:3: lv_viewportRow_2_0= RULE_INT
+            {
+            lv_viewportRow_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3161); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_viewportRow_2_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportRowINTTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"viewportRow",
+                      		lv_viewportRow_2_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,39,FOLLOW_39_in_ruleStatemachineActionPeripheralCreateWindow3178); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getColumnKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1362:1: ( (lv_viewportColumn_4_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1363:1: (lv_viewportColumn_4_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1363:1: (lv_viewportColumn_4_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1364:3: lv_viewportColumn_4_0= RULE_INT
+            {
+            lv_viewportColumn_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3195); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_viewportColumn_4_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportColumnINTTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"viewportColumn",
+                      		lv_viewportColumn_4_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,40,FOLLOW_40_in_ruleStatemachineActionPeripheralCreateWindow3212); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getHeightKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1384:1: ( (lv_viewportHeight_6_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1385:1: (lv_viewportHeight_6_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1385:1: (lv_viewportHeight_6_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1386:3: lv_viewportHeight_6_0= RULE_INT
+            {
+            lv_viewportHeight_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3229); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_viewportHeight_6_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportHeightINTTerminalRuleCall_6_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"viewportHeight",
+                      		lv_viewportHeight_6_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,41,FOLLOW_41_in_ruleStatemachineActionPeripheralCreateWindow3246); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWidthKeyword_7());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1406:1: ( (lv_viewportWidth_8_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1407:1: (lv_viewportWidth_8_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1407:1: (lv_viewportWidth_8_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1408:3: lv_viewportWidth_8_0= RULE_INT
+            {
+            lv_viewportWidth_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3263); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_viewportWidth_8_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportWidthINTTerminalRuleCall_8_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"viewportWidth",
+                      		lv_viewportWidth_8_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,42,FOLLOW_42_in_ruleStatemachineActionPeripheralCreateWindow3280); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_9, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightKeyword_9());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1428:1: ( (lv_windowHeight_10_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1429:1: (lv_windowHeight_10_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1429:1: (lv_windowHeight_10_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1430:3: lv_windowHeight_10_0= RULE_INT
+            {
+            lv_windowHeight_10_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3297); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_windowHeight_10_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightINTTerminalRuleCall_10_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"windowHeight",
+                      		lv_windowHeight_10_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_11=(Token)match(input,43,FOLLOW_43_in_ruleStatemachineActionPeripheralCreateWindow3314); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_11, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthKeyword_11());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1450:1: ( (lv_windowWidth_12_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1451:1: (lv_windowWidth_12_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1451:1: (lv_windowWidth_12_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1452:3: lv_windowWidth_12_0= RULE_INT
+            {
+            lv_windowWidth_12_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralCreateWindow3331); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_windowWidth_12_0, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthINTTerminalRuleCall_12_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"windowWidth",
+                      		lv_windowWidth_12_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_13=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralCreateWindow3348); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_13, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getCommercialAtKeyword_13());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1472:1: ( (otherlv_14= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1473:1: (otherlv_14= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1473:1: (otherlv_14= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1474:3: otherlv_14= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCreateWindowRule());
+              	        }
+                      
+            }
+            otherlv_14=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralCreateWindow3368); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_14, grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralCreateWindow"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralCursorType"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1493:1: entryRuleStatemachineActionPeripheralCursorType returns [EObject current=null] : iv_ruleStatemachineActionPeripheralCursorType= ruleStatemachineActionPeripheralCursorType EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralCursorType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralCursorType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1494:2: (iv_ruleStatemachineActionPeripheralCursorType= ruleStatemachineActionPeripheralCursorType EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1495:2: iv_ruleStatemachineActionPeripheralCursorType= ruleStatemachineActionPeripheralCursorType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralCursorTypeRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralCursorType_in_entryRuleStatemachineActionPeripheralCursorType3404);
+            iv_ruleStatemachineActionPeripheralCursorType=ruleStatemachineActionPeripheralCursorType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralCursorType; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralCursorType3414); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralCursorType"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralCursorType"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1502:1: ruleStatemachineActionPeripheralCursorType returns [EObject current=null] : (otherlv_0= 'cursorType' ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralCursorType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Enumerator lv_cursorType_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1505:28: ( (otherlv_0= 'cursorType' ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1506:1: (otherlv_0= 'cursorType' ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1506:1: (otherlv_0= 'cursorType' ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1506:3: otherlv_0= 'cursorType' ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,44,FOLLOW_44_in_ruleStatemachineActionPeripheralCursorType3451); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1510:1: ( (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1511:1: (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1511:1: (lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1512:3: lv_cursorType_1_0= ruleStatemachineLineDisplayCursorType
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineLineDisplayCursorType_in_ruleStatemachineActionPeripheralCursorType3472);
+            lv_cursorType_1_0=ruleStatemachineLineDisplayCursorType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralCursorTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"cursorType",
+                      		lv_cursorType_1_0, 
+                      		"StatemachineLineDisplayCursorType");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralCursorType3484); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1532:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1533:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1533:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1534:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralCursorTypeRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralCursorType3504); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralCursorType"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralDestroyWindow"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1553:1: entryRuleStatemachineActionPeripheralDestroyWindow returns [EObject current=null] : iv_ruleStatemachineActionPeripheralDestroyWindow= ruleStatemachineActionPeripheralDestroyWindow EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralDestroyWindow() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralDestroyWindow = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1554:2: (iv_ruleStatemachineActionPeripheralDestroyWindow= ruleStatemachineActionPeripheralDestroyWindow EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1555:2: iv_ruleStatemachineActionPeripheralDestroyWindow= ruleStatemachineActionPeripheralDestroyWindow EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralDestroyWindow_in_entryRuleStatemachineActionPeripheralDestroyWindow3540);
+            iv_ruleStatemachineActionPeripheralDestroyWindow=ruleStatemachineActionPeripheralDestroyWindow();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralDestroyWindow; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDestroyWindow3550); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralDestroyWindow"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralDestroyWindow"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1562:1: ruleStatemachineActionPeripheralDestroyWindow returns [EObject current=null] : (otherlv_0= 'destroyWindow' ( (otherlv_1= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralDestroyWindow() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1565:28: ( (otherlv_0= 'destroyWindow' ( (otherlv_1= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1566:1: (otherlv_0= 'destroyWindow' ( (otherlv_1= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1566:1: (otherlv_0= 'destroyWindow' ( (otherlv_1= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1566:3: otherlv_0= 'destroyWindow' ( (otherlv_1= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,45,FOLLOW_45_in_ruleStatemachineActionPeripheralDestroyWindow3587); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDestroyWindowKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1570:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1571:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1571:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1572:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDestroyWindowRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralDestroyWindow3607); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralDestroyWindow"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralDeviceBrightness"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1591:1: entryRuleStatemachineActionPeripheralDeviceBrightness returns [EObject current=null] : iv_ruleStatemachineActionPeripheralDeviceBrightness= ruleStatemachineActionPeripheralDeviceBrightness EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralDeviceBrightness() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralDeviceBrightness = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1592:2: (iv_ruleStatemachineActionPeripheralDeviceBrightness= ruleStatemachineActionPeripheralDeviceBrightness EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1593:2: iv_ruleStatemachineActionPeripheralDeviceBrightness= ruleStatemachineActionPeripheralDeviceBrightness EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralDeviceBrightness_in_entryRuleStatemachineActionPeripheralDeviceBrightness3643);
+            iv_ruleStatemachineActionPeripheralDeviceBrightness=ruleStatemachineActionPeripheralDeviceBrightness();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralDeviceBrightness; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDeviceBrightness3653); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralDeviceBrightness"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralDeviceBrightness"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1600:1: ruleStatemachineActionPeripheralDeviceBrightness returns [EObject current=null] : (otherlv_0= 'deviceBrightness' ( (lv_brightness_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralDeviceBrightness() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_brightness_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1603:28: ( (otherlv_0= 'deviceBrightness' ( (lv_brightness_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1604:1: (otherlv_0= 'deviceBrightness' ( (lv_brightness_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1604:1: (otherlv_0= 'deviceBrightness' ( (lv_brightness_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1604:3: otherlv_0= 'deviceBrightness' ( (lv_brightness_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleStatemachineActionPeripheralDeviceBrightness3690); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceBrightnessKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1608:1: ( (lv_brightness_1_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1609:1: (lv_brightness_1_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1609:1: (lv_brightness_1_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1610:3: lv_brightness_1_0= RULE_INT
+            {
+            lv_brightness_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralDeviceBrightness3707); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_brightness_1_0, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getBrightnessINTTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"brightness",
+                      		lv_brightness_1_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralDeviceBrightness3724); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1630:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1631:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1631:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1632:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralDeviceBrightness3744); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralDeviceBrightness"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralDisplayBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1651:1: entryRuleStatemachineActionPeripheralDisplayBitmap returns [EObject current=null] : iv_ruleStatemachineActionPeripheralDisplayBitmap= ruleStatemachineActionPeripheralDisplayBitmap EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralDisplayBitmap() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralDisplayBitmap = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1652:2: (iv_ruleStatemachineActionPeripheralDisplayBitmap= ruleStatemachineActionPeripheralDisplayBitmap EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1653:2: iv_ruleStatemachineActionPeripheralDisplayBitmap= ruleStatemachineActionPeripheralDisplayBitmap EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayBitmap_in_entryRuleStatemachineActionPeripheralDisplayBitmap3780);
+            iv_ruleStatemachineActionPeripheralDisplayBitmap=ruleStatemachineActionPeripheralDisplayBitmap();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralDisplayBitmap; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayBitmap3790); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralDisplayBitmap"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralDisplayBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1660:1: ruleStatemachineActionPeripheralDisplayBitmap returns [EObject current=null] : (otherlv_0= 'displayBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralDisplayBitmap() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_bitmapId_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1663:28: ( (otherlv_0= 'displayBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1664:1: (otherlv_0= 'displayBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1664:1: (otherlv_0= 'displayBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1664:3: otherlv_0= 'displayBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,47,FOLLOW_47_in_ruleStatemachineActionPeripheralDisplayBitmap3827); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDisplayBitmapKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleStatemachineActionPeripheralDisplayBitmap3839); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getIdKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1672:1: ( (lv_bitmapId_2_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1673:1: (lv_bitmapId_2_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1673:1: (lv_bitmapId_2_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1674:3: lv_bitmapId_2_0= RULE_INT
+            {
+            lv_bitmapId_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralDisplayBitmap3856); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"bitmapId",
+                      		lv_bitmapId_2_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralDisplayBitmap3873); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1694:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1695:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1695:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1696:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralDisplayBitmap3893); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralDisplayBitmap"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralDisplayText"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1715:1: entryRuleStatemachineActionPeripheralDisplayText returns [EObject current=null] : iv_ruleStatemachineActionPeripheralDisplayText= ruleStatemachineActionPeripheralDisplayText EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralDisplayText() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralDisplayText = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1716:2: (iv_ruleStatemachineActionPeripheralDisplayText= ruleStatemachineActionPeripheralDisplayText EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1717:2: iv_ruleStatemachineActionPeripheralDisplayText= ruleStatemachineActionPeripheralDisplayText EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayText_in_entryRuleStatemachineActionPeripheralDisplayText3929);
+            iv_ruleStatemachineActionPeripheralDisplayText=ruleStatemachineActionPeripheralDisplayText();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralDisplayText; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayText3939); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralDisplayText"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralDisplayText"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1724:1: ruleStatemachineActionPeripheralDisplayText returns [EObject current=null] : (otherlv_0= 'displayText' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralDisplayText() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_hasType_3_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        EObject lv_text_2_0 = null;
+
+        Enumerator lv_textType_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1727:28: ( (otherlv_0= 'displayText' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1728:1: (otherlv_0= 'displayText' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1728:1: (otherlv_0= 'displayText' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1728:3: otherlv_0= 'displayText' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleStatemachineActionPeripheralDisplayText3976); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getDisplayTextKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleStatemachineActionPeripheralDisplayText3988); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1736:1: ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1737:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1737:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1738:3: lv_text_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralDisplayText4009);
+            lv_text_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"text",
+                      		lv_text_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1754:2: ( ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) ) )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==51) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1754:3: ( (lv_hasType_3_0= 'type' ) ) ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1754:3: ( (lv_hasType_3_0= 'type' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1755:1: (lv_hasType_3_0= 'type' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1755:1: (lv_hasType_3_0= 'type' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1756:3: lv_hasType_3_0= 'type'
+                    {
+                    lv_hasType_3_0=(Token)match(input,51,FOLLOW_51_in_ruleStatemachineActionPeripheralDisplayText4028); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasType_3_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getHasTypeTypeKeyword_3_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasType", true, "type");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1769:2: ( (lv_textType_4_0= ruleStatemachineLineDisplayTextType ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1770:1: (lv_textType_4_0= ruleStatemachineLineDisplayTextType )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1770:1: (lv_textType_4_0= ruleStatemachineLineDisplayTextType )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1771:3: lv_textType_4_0= ruleStatemachineLineDisplayTextType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_3_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineLineDisplayTextType_in_ruleStatemachineActionPeripheralDisplayText4062);
+                    lv_textType_4_0=ruleStatemachineLineDisplayTextType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"textType",
+                              		lv_textType_4_0, 
+                              		"StatemachineLineDisplayTextType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralDisplayText4076); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getCommercialAtKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1791:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1792:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1792:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1793:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralDisplayText4096); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralDisplayTextAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralDisplayText"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralDisplayTextAt"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1812:1: entryRuleStatemachineActionPeripheralDisplayTextAt returns [EObject current=null] : iv_ruleStatemachineActionPeripheralDisplayTextAt= ruleStatemachineActionPeripheralDisplayTextAt EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralDisplayTextAt() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralDisplayTextAt = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1813:2: (iv_ruleStatemachineActionPeripheralDisplayTextAt= ruleStatemachineActionPeripheralDisplayTextAt EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1814:2: iv_ruleStatemachineActionPeripheralDisplayTextAt= ruleStatemachineActionPeripheralDisplayTextAt EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralDisplayTextAt_in_entryRuleStatemachineActionPeripheralDisplayTextAt4132);
+            iv_ruleStatemachineActionPeripheralDisplayTextAt=ruleStatemachineActionPeripheralDisplayTextAt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralDisplayTextAt; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralDisplayTextAt4142); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralDisplayTextAt"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralDisplayTextAt"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1821:1: ruleStatemachineActionPeripheralDisplayTextAt returns [EObject current=null] : (otherlv_0= 'displayTextAt' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'row' ( (lv_row_4_0= RULE_INT ) ) otherlv_5= 'column' ( (lv_column_6_0= RULE_INT ) ) ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_9= '@' ( (otherlv_10= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralDisplayTextAt() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token lv_row_4_0=null;
+        Token otherlv_5=null;
+        Token lv_column_6_0=null;
+        Token lv_hasType_7_0=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        EObject lv_text_2_0 = null;
+
+        Enumerator lv_textType_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1824:28: ( (otherlv_0= 'displayTextAt' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'row' ( (lv_row_4_0= RULE_INT ) ) otherlv_5= 'column' ( (lv_column_6_0= RULE_INT ) ) ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_9= '@' ( (otherlv_10= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1825:1: (otherlv_0= 'displayTextAt' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'row' ( (lv_row_4_0= RULE_INT ) ) otherlv_5= 'column' ( (lv_column_6_0= RULE_INT ) ) ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_9= '@' ( (otherlv_10= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1825:1: (otherlv_0= 'displayTextAt' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'row' ( (lv_row_4_0= RULE_INT ) ) otherlv_5= 'column' ( (lv_column_6_0= RULE_INT ) ) ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_9= '@' ( (otherlv_10= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1825:3: otherlv_0= 'displayTextAt' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'row' ( (lv_row_4_0= RULE_INT ) ) otherlv_5= 'column' ( (lv_column_6_0= RULE_INT ) ) ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )? otherlv_9= '@' ( (otherlv_10= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,52,FOLLOW_52_in_ruleStatemachineActionPeripheralDisplayTextAt4179); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getDisplayTextAtKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleStatemachineActionPeripheralDisplayTextAt4191); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1833:1: ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1834:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1834:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1835:3: lv_text_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralDisplayTextAt4212);
+            lv_text_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"text",
+                      		lv_text_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,38,FOLLOW_38_in_ruleStatemachineActionPeripheralDisplayTextAt4224); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getRowKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1855:1: ( (lv_row_4_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1856:1: (lv_row_4_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1856:1: (lv_row_4_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1857:3: lv_row_4_0= RULE_INT
+            {
+            lv_row_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralDisplayTextAt4241); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_row_4_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getRowINTTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"row",
+                      		lv_row_4_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,39,FOLLOW_39_in_ruleStatemachineActionPeripheralDisplayTextAt4258); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getColumnKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1877:1: ( (lv_column_6_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1878:1: (lv_column_6_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1878:1: (lv_column_6_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1879:3: lv_column_6_0= RULE_INT
+            {
+            lv_column_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralDisplayTextAt4275); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_column_6_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getColumnINTTerminalRuleCall_6_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"column",
+                      		lv_column_6_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1895:2: ( ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) ) )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==51) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1895:3: ( (lv_hasType_7_0= 'type' ) ) ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1895:3: ( (lv_hasType_7_0= 'type' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1896:1: (lv_hasType_7_0= 'type' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1896:1: (lv_hasType_7_0= 'type' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1897:3: lv_hasType_7_0= 'type'
+                    {
+                    lv_hasType_7_0=(Token)match(input,51,FOLLOW_51_in_ruleStatemachineActionPeripheralDisplayTextAt4299); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasType_7_0, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getHasTypeTypeKeyword_7_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasType", true, "type");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1910:2: ( (lv_textType_8_0= ruleStatemachineLineDisplayTextType ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1911:1: (lv_textType_8_0= ruleStatemachineLineDisplayTextType )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1911:1: (lv_textType_8_0= ruleStatemachineLineDisplayTextType )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1912:3: lv_textType_8_0= ruleStatemachineLineDisplayTextType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_7_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineLineDisplayTextType_in_ruleStatemachineActionPeripheralDisplayTextAt4333);
+                    lv_textType_8_0=ruleStatemachineLineDisplayTextType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"textType",
+                              		lv_textType_8_0, 
+                              		"StatemachineLineDisplayTextType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralDisplayTextAt4347); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_9, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getCommercialAtKeyword_8());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1932:1: ( (otherlv_10= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1933:1: (otherlv_10= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1933:1: (otherlv_10= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1934:3: otherlv_10= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule());
+              	        }
+                      
+            }
+            otherlv_10=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralDisplayTextAt4367); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_10, grammarAccess.getStatemachineActionPeripheralDisplayTextAtAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralDisplayTextAt"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralInterCharacterWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1953:1: entryRuleStatemachineActionPeripheralInterCharacterWait returns [EObject current=null] : iv_ruleStatemachineActionPeripheralInterCharacterWait= ruleStatemachineActionPeripheralInterCharacterWait EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralInterCharacterWait() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralInterCharacterWait = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1954:2: (iv_ruleStatemachineActionPeripheralInterCharacterWait= ruleStatemachineActionPeripheralInterCharacterWait EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1955:2: iv_ruleStatemachineActionPeripheralInterCharacterWait= ruleStatemachineActionPeripheralInterCharacterWait EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralInterCharacterWait_in_entryRuleStatemachineActionPeripheralInterCharacterWait4403);
+            iv_ruleStatemachineActionPeripheralInterCharacterWait=ruleStatemachineActionPeripheralInterCharacterWait();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralInterCharacterWait; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralInterCharacterWait4413); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralInterCharacterWait"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralInterCharacterWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1962:1: ruleStatemachineActionPeripheralInterCharacterWait returns [EObject current=null] : (otherlv_0= 'interCharacterWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralInterCharacterWait() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_wait_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1965:28: ( (otherlv_0= 'interCharacterWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1966:1: (otherlv_0= 'interCharacterWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1966:1: (otherlv_0= 'interCharacterWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1966:3: otherlv_0= 'interCharacterWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,53,FOLLOW_53_in_ruleStatemachineActionPeripheralInterCharacterWait4450); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getInterCharacterWaitKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1970:1: ( (lv_wait_1_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1971:1: (lv_wait_1_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1971:1: (lv_wait_1_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1972:3: lv_wait_1_0= RULE_INT
+            {
+            lv_wait_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralInterCharacterWait4467); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"wait",
+                      		lv_wait_1_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralInterCharacterWait4484); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1992:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1993:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1993:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:1994:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralInterCharacterWait4504); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralInterCharacterWait"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralMarqueeFormat"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2013:1: entryRuleStatemachineActionPeripheralMarqueeFormat returns [EObject current=null] : iv_ruleStatemachineActionPeripheralMarqueeFormat= ruleStatemachineActionPeripheralMarqueeFormat EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralMarqueeFormat() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralMarqueeFormat = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2014:2: (iv_ruleStatemachineActionPeripheralMarqueeFormat= ruleStatemachineActionPeripheralMarqueeFormat EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2015:2: iv_ruleStatemachineActionPeripheralMarqueeFormat= ruleStatemachineActionPeripheralMarqueeFormat EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeFormat_in_entryRuleStatemachineActionPeripheralMarqueeFormat4540);
+            iv_ruleStatemachineActionPeripheralMarqueeFormat=ruleStatemachineActionPeripheralMarqueeFormat();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralMarqueeFormat; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeFormat4550); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralMarqueeFormat"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralMarqueeFormat"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2022:1: ruleStatemachineActionPeripheralMarqueeFormat returns [EObject current=null] : (otherlv_0= 'marqueeFormat' ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralMarqueeFormat() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Enumerator lv_format_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2025:28: ( (otherlv_0= 'marqueeFormat' ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2026:1: (otherlv_0= 'marqueeFormat' ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2026:1: (otherlv_0= 'marqueeFormat' ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2026:3: otherlv_0= 'marqueeFormat' ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,54,FOLLOW_54_in_ruleStatemachineActionPeripheralMarqueeFormat4587); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getMarqueeFormatKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2030:1: ( (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2031:1: (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2031:1: (lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2032:3: lv_format_1_0= ruleStatemachineLineDisplayMarqueeFormat
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineLineDisplayMarqueeFormat_in_ruleStatemachineActionPeripheralMarqueeFormat4608);
+            lv_format_1_0=ruleStatemachineLineDisplayMarqueeFormat();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"format",
+                      		lv_format_1_0, 
+                      		"StatemachineLineDisplayMarqueeFormat");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralMarqueeFormat4620); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2052:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2053:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2053:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2054:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralMarqueeFormat4640); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralMarqueeFormat"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralMarqueeRepeatWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2073:1: entryRuleStatemachineActionPeripheralMarqueeRepeatWait returns [EObject current=null] : iv_ruleStatemachineActionPeripheralMarqueeRepeatWait= ruleStatemachineActionPeripheralMarqueeRepeatWait EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralMarqueeRepeatWait() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralMarqueeRepeatWait = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2074:2: (iv_ruleStatemachineActionPeripheralMarqueeRepeatWait= ruleStatemachineActionPeripheralMarqueeRepeatWait EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2075:2: iv_ruleStatemachineActionPeripheralMarqueeRepeatWait= ruleStatemachineActionPeripheralMarqueeRepeatWait EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeRepeatWait_in_entryRuleStatemachineActionPeripheralMarqueeRepeatWait4676);
+            iv_ruleStatemachineActionPeripheralMarqueeRepeatWait=ruleStatemachineActionPeripheralMarqueeRepeatWait();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralMarqueeRepeatWait; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeRepeatWait4686); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralMarqueeRepeatWait"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralMarqueeRepeatWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2082:1: ruleStatemachineActionPeripheralMarqueeRepeatWait returns [EObject current=null] : (otherlv_0= 'marqueeRepeatWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralMarqueeRepeatWait() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_wait_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2085:28: ( (otherlv_0= 'marqueeRepeatWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2086:1: (otherlv_0= 'marqueeRepeatWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2086:1: (otherlv_0= 'marqueeRepeatWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2086:3: otherlv_0= 'marqueeRepeatWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,55,FOLLOW_55_in_ruleStatemachineActionPeripheralMarqueeRepeatWait4723); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getMarqueeRepeatWaitKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2090:1: ( (lv_wait_1_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2091:1: (lv_wait_1_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2091:1: (lv_wait_1_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2092:3: lv_wait_1_0= RULE_INT
+            {
+            lv_wait_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralMarqueeRepeatWait4740); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"wait",
+                      		lv_wait_1_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralMarqueeRepeatWait4757); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2112:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2113:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2113:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2114:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralMarqueeRepeatWait4777); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralMarqueeRepeatWait"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralMarqueeType"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2133:1: entryRuleStatemachineActionPeripheralMarqueeType returns [EObject current=null] : iv_ruleStatemachineActionPeripheralMarqueeType= ruleStatemachineActionPeripheralMarqueeType EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralMarqueeType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralMarqueeType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2134:2: (iv_ruleStatemachineActionPeripheralMarqueeType= ruleStatemachineActionPeripheralMarqueeType EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2135:2: iv_ruleStatemachineActionPeripheralMarqueeType= ruleStatemachineActionPeripheralMarqueeType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeType_in_entryRuleStatemachineActionPeripheralMarqueeType4813);
+            iv_ruleStatemachineActionPeripheralMarqueeType=ruleStatemachineActionPeripheralMarqueeType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralMarqueeType; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeType4823); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralMarqueeType"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralMarqueeType"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2142:1: ruleStatemachineActionPeripheralMarqueeType returns [EObject current=null] : (otherlv_0= 'marqueeType' ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralMarqueeType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Enumerator lv_marqueeType_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2145:28: ( (otherlv_0= 'marqueeType' ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2146:1: (otherlv_0= 'marqueeType' ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2146:1: (otherlv_0= 'marqueeType' ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2146:3: otherlv_0= 'marqueeType' ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,56,FOLLOW_56_in_ruleStatemachineActionPeripheralMarqueeType4860); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2150:1: ( (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2151:1: (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2151:1: (lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2152:3: lv_marqueeType_1_0= ruleStatemachineLineDisplayMarqueeType
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineLineDisplayMarqueeType_in_ruleStatemachineActionPeripheralMarqueeType4881);
+            lv_marqueeType_1_0=ruleStatemachineLineDisplayMarqueeType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"marqueeType",
+                      		lv_marqueeType_1_0, 
+                      		"StatemachineLineDisplayMarqueeType");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralMarqueeType4893); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2172:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2173:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2173:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2174:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralMarqueeType4913); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralMarqueeType"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralMarqueeUnitWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2193:1: entryRuleStatemachineActionPeripheralMarqueeUnitWait returns [EObject current=null] : iv_ruleStatemachineActionPeripheralMarqueeUnitWait= ruleStatemachineActionPeripheralMarqueeUnitWait EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralMarqueeUnitWait() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralMarqueeUnitWait = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2194:2: (iv_ruleStatemachineActionPeripheralMarqueeUnitWait= ruleStatemachineActionPeripheralMarqueeUnitWait EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2195:2: iv_ruleStatemachineActionPeripheralMarqueeUnitWait= ruleStatemachineActionPeripheralMarqueeUnitWait EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralMarqueeUnitWait_in_entryRuleStatemachineActionPeripheralMarqueeUnitWait4949);
+            iv_ruleStatemachineActionPeripheralMarqueeUnitWait=ruleStatemachineActionPeripheralMarqueeUnitWait();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralMarqueeUnitWait; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralMarqueeUnitWait4959); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralMarqueeUnitWait"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralMarqueeUnitWait"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2202:1: ruleStatemachineActionPeripheralMarqueeUnitWait returns [EObject current=null] : (otherlv_0= 'marqueeUnitWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralMarqueeUnitWait() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_wait_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2205:28: ( (otherlv_0= 'marqueeUnitWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2206:1: (otherlv_0= 'marqueeUnitWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2206:1: (otherlv_0= 'marqueeUnitWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2206:3: otherlv_0= 'marqueeUnitWait' ( (lv_wait_1_0= RULE_INT ) ) otherlv_2= '@' ( (otherlv_3= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,57,FOLLOW_57_in_ruleStatemachineActionPeripheralMarqueeUnitWait4996); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getMarqueeUnitWaitKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2210:1: ( (lv_wait_1_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2211:1: (lv_wait_1_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2211:1: (lv_wait_1_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2212:3: lv_wait_1_0= RULE_INT
+            {
+            lv_wait_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralMarqueeUnitWait5013); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_wait_1_0, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getWaitINTTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"wait",
+                      		lv_wait_1_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralMarqueeUnitWait5030); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getCommercialAtKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2232:1: ( (otherlv_3= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2233:1: (otherlv_3= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2233:1: (otherlv_3= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2234:3: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule());
+              	        }
+                      
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralMarqueeUnitWait5050); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralMarqueeUnitWait"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralScroll"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2253:1: entryRuleStatemachineActionPeripheralScroll returns [EObject current=null] : iv_ruleStatemachineActionPeripheralScroll= ruleStatemachineActionPeripheralScroll EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralScroll() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralScroll = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2254:2: (iv_ruleStatemachineActionPeripheralScroll= ruleStatemachineActionPeripheralScroll EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2255:2: iv_ruleStatemachineActionPeripheralScroll= ruleStatemachineActionPeripheralScroll EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralScrollRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralScroll_in_entryRuleStatemachineActionPeripheralScroll5086);
+            iv_ruleStatemachineActionPeripheralScroll=ruleStatemachineActionPeripheralScroll();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralScroll; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralScroll5096); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralScroll"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralScroll"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2262:1: ruleStatemachineActionPeripheralScroll returns [EObject current=null] : (otherlv_0= 'scroll' ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) ) ( (lv_units_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralScroll() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_units_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Enumerator lv_direction_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2265:28: ( (otherlv_0= 'scroll' ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) ) ( (lv_units_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2266:1: (otherlv_0= 'scroll' ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) ) ( (lv_units_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2266:1: (otherlv_0= 'scroll' ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) ) ( (lv_units_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2266:3: otherlv_0= 'scroll' ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) ) ( (lv_units_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,58,FOLLOW_58_in_ruleStatemachineActionPeripheralScroll5133); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralScrollAccess().getScrollKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2270:1: ( (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2271:1: (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2271:1: (lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2272:3: lv_direction_1_0= ruleStatemachineLineDisplayScrollTextType
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineLineDisplayScrollTextType_in_ruleStatemachineActionPeripheralScroll5154);
+            lv_direction_1_0=ruleStatemachineLineDisplayScrollTextType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralScrollRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"direction",
+                      		lv_direction_1_0, 
+                      		"StatemachineLineDisplayScrollTextType");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2288:2: ( (lv_units_2_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2289:1: (lv_units_2_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2289:1: (lv_units_2_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2290:3: lv_units_2_0= RULE_INT
+            {
+            lv_units_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralScroll5171); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_units_2_0, grammarAccess.getStatemachineActionPeripheralScrollAccess().getUnitsINTTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralScrollRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"units",
+                      		lv_units_2_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralScroll5188); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralScrollAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2310:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2311:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2311:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2312:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralScrollRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralScroll5208); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralScrollAccess().getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralScroll"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralOpenDrawer"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2331:1: entryRuleStatemachineActionPeripheralOpenDrawer returns [EObject current=null] : iv_ruleStatemachineActionPeripheralOpenDrawer= ruleStatemachineActionPeripheralOpenDrawer EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralOpenDrawer() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralOpenDrawer = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2332:2: (iv_ruleStatemachineActionPeripheralOpenDrawer= ruleStatemachineActionPeripheralOpenDrawer EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2333:2: iv_ruleStatemachineActionPeripheralOpenDrawer= ruleStatemachineActionPeripheralOpenDrawer EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralOpenDrawer_in_entryRuleStatemachineActionPeripheralOpenDrawer5244);
+            iv_ruleStatemachineActionPeripheralOpenDrawer=ruleStatemachineActionPeripheralOpenDrawer();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralOpenDrawer; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralOpenDrawer5254); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralOpenDrawer"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralOpenDrawer"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2340:1: ruleStatemachineActionPeripheralOpenDrawer returns [EObject current=null] : (otherlv_0= 'openDrawer' ( (otherlv_1= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralOpenDrawer() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2343:28: ( (otherlv_0= 'openDrawer' ( (otherlv_1= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2344:1: (otherlv_0= 'openDrawer' ( (otherlv_1= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2344:1: (otherlv_0= 'openDrawer' ( (otherlv_1= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2344:3: otherlv_0= 'openDrawer' ( (otherlv_1= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,59,FOLLOW_59_in_ruleStatemachineActionPeripheralOpenDrawer5291); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getOpenDrawerKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2348:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2349:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2349:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2350:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralOpenDrawerRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralOpenDrawer5311); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralOpenDrawer"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintBarcode"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2369:1: entryRuleStatemachineActionPeripheralPrintBarcode returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintBarcode= ruleStatemachineActionPeripheralPrintBarcode EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintBarcode() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintBarcode = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2370:2: (iv_ruleStatemachineActionPeripheralPrintBarcode= ruleStatemachineActionPeripheralPrintBarcode EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2371:2: iv_ruleStatemachineActionPeripheralPrintBarcode= ruleStatemachineActionPeripheralPrintBarcode EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintBarcode_in_entryRuleStatemachineActionPeripheralPrintBarcode5347);
+            iv_ruleStatemachineActionPeripheralPrintBarcode=ruleStatemachineActionPeripheralPrintBarcode();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintBarcode; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintBarcode5357); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintBarcode"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintBarcode"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2378:1: ruleStatemachineActionPeripheralPrintBarcode returns [EObject current=null] : (otherlv_0= 'printBarcode' otherlv_1= 'data' ( (lv_data_2_0= RULE_STRING ) ) otherlv_3= 'barcodeType' ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintBarcode() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_data_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Enumerator lv_barcodeType_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2381:28: ( (otherlv_0= 'printBarcode' otherlv_1= 'data' ( (lv_data_2_0= RULE_STRING ) ) otherlv_3= 'barcodeType' ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2382:1: (otherlv_0= 'printBarcode' otherlv_1= 'data' ( (lv_data_2_0= RULE_STRING ) ) otherlv_3= 'barcodeType' ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2382:1: (otherlv_0= 'printBarcode' otherlv_1= 'data' ( (lv_data_2_0= RULE_STRING ) ) otherlv_3= 'barcodeType' ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2382:3: otherlv_0= 'printBarcode' otherlv_1= 'data' ( (lv_data_2_0= RULE_STRING ) ) otherlv_3= 'barcodeType' ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,60,FOLLOW_60_in_ruleStatemachineActionPeripheralPrintBarcode5394); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getPrintBarcodeKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,61,FOLLOW_61_in_ruleStatemachineActionPeripheralPrintBarcode5406); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2390:1: ( (lv_data_2_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2391:1: (lv_data_2_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2391:1: (lv_data_2_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2392:3: lv_data_2_0= RULE_STRING
+            {
+            lv_data_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStatemachineActionPeripheralPrintBarcode5423); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_data_2_0, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataSTRINGTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"data",
+                      		lv_data_2_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,62,FOLLOW_62_in_ruleStatemachineActionPeripheralPrintBarcode5440); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2412:1: ( (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2413:1: (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2413:1: (lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2414:3: lv_barcodeType_4_0= ruleStatemachinePOSPrinterBarcodeType
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachinePOSPrinterBarcodeType_in_ruleStatemachineActionPeripheralPrintBarcode5461);
+            lv_barcodeType_4_0=ruleStatemachinePOSPrinterBarcodeType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"barcodeType",
+                      		lv_barcodeType_4_0, 
+                      		"StatemachinePOSPrinterBarcodeType");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPrintBarcode5473); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getCommercialAtKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2434:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2435:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2435:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2436:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintBarcode5493); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintBarcode"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2455:1: entryRuleStatemachineActionPeripheralPrintBitmap returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintBitmap= ruleStatemachineActionPeripheralPrintBitmap EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintBitmap() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintBitmap = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2456:2: (iv_ruleStatemachineActionPeripheralPrintBitmap= ruleStatemachineActionPeripheralPrintBitmap EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2457:2: iv_ruleStatemachineActionPeripheralPrintBitmap= ruleStatemachineActionPeripheralPrintBitmap EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintBitmap_in_entryRuleStatemachineActionPeripheralPrintBitmap5529);
+            iv_ruleStatemachineActionPeripheralPrintBitmap=ruleStatemachineActionPeripheralPrintBitmap();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintBitmap; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintBitmap5539); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintBitmap"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2464:1: ruleStatemachineActionPeripheralPrintBitmap returns [EObject current=null] : (otherlv_0= 'printBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintBitmap() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_bitmapId_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2467:28: ( (otherlv_0= 'printBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2468:1: (otherlv_0= 'printBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2468:1: (otherlv_0= 'printBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2468:3: otherlv_0= 'printBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,63,FOLLOW_63_in_ruleStatemachineActionPeripheralPrintBitmap5576); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getPrintBitmapKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleStatemachineActionPeripheralPrintBitmap5588); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getIdKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2476:1: ( (lv_bitmapId_2_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2477:1: (lv_bitmapId_2_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2477:1: (lv_bitmapId_2_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2478:3: lv_bitmapId_2_0= RULE_INT
+            {
+            lv_bitmapId_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralPrintBitmap5605); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"bitmapId",
+                      		lv_bitmapId_2_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPrintBitmap5622); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2498:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2499:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2499:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2500:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintBitmapRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintBitmap5642); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintBitmap"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintCut"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2519:1: entryRuleStatemachineActionPeripheralPrintCut returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintCut= ruleStatemachineActionPeripheralPrintCut EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintCut() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintCut = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2520:2: (iv_ruleStatemachineActionPeripheralPrintCut= ruleStatemachineActionPeripheralPrintCut EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2521:2: iv_ruleStatemachineActionPeripheralPrintCut= ruleStatemachineActionPeripheralPrintCut EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintCutRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintCut_in_entryRuleStatemachineActionPeripheralPrintCut5678);
+            iv_ruleStatemachineActionPeripheralPrintCut=ruleStatemachineActionPeripheralPrintCut();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintCut; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintCut5688); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintCut"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintCut"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2528:1: ruleStatemachineActionPeripheralPrintCut returns [EObject current=null] : (otherlv_0= 'printCut' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintCut() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        EObject lv_text_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2531:28: ( (otherlv_0= 'printCut' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2532:1: (otherlv_0= 'printCut' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2532:1: (otherlv_0= 'printCut' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2532:3: otherlv_0= 'printCut' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,64,FOLLOW_64_in_ruleStatemachineActionPeripheralPrintCut5725); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getPrintCutKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleStatemachineActionPeripheralPrintCut5737); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2540:1: ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2541:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2541:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2542:3: lv_text_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPrintCut5758);
+            lv_text_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintCutRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"text",
+                      		lv_text_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPrintCut5770); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2562:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2563:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2563:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2564:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintCutRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintCut5790); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintCut"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintNormal"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2583:1: entryRuleStatemachineActionPeripheralPrintNormal returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintNormal= ruleStatemachineActionPeripheralPrintNormal EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintNormal() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintNormal = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2584:2: (iv_ruleStatemachineActionPeripheralPrintNormal= ruleStatemachineActionPeripheralPrintNormal EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2585:2: iv_ruleStatemachineActionPeripheralPrintNormal= ruleStatemachineActionPeripheralPrintNormal EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintNormalRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintNormal_in_entryRuleStatemachineActionPeripheralPrintNormal5826);
+            iv_ruleStatemachineActionPeripheralPrintNormal=ruleStatemachineActionPeripheralPrintNormal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintNormal; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintNormal5836); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintNormal"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintNormal"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2592:1: ruleStatemachineActionPeripheralPrintNormal returns [EObject current=null] : (otherlv_0= 'printNormal' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintNormal() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        EObject lv_text_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2595:28: ( (otherlv_0= 'printNormal' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2596:1: (otherlv_0= 'printNormal' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2596:1: (otherlv_0= 'printNormal' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2596:3: otherlv_0= 'printNormal' otherlv_1= 'text' ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,65,FOLLOW_65_in_ruleStatemachineActionPeripheralPrintNormal5873); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getPrintNormalKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleStatemachineActionPeripheralPrintNormal5885); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getTextKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2604:1: ( (lv_text_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2605:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2605:1: (lv_text_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2606:3: lv_text_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPrintNormal5906);
+            lv_text_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPrintNormalRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"text",
+                      		lv_text_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPrintNormal5918); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2626:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2627:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2627:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2628:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintNormalRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintNormal5938); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPrintNormalAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintNormal"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintRegisterBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2647:1: entryRuleStatemachineActionPeripheralPrintRegisterBitmap returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintRegisterBitmap= ruleStatemachineActionPeripheralPrintRegisterBitmap EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintRegisterBitmap() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintRegisterBitmap = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2648:2: (iv_ruleStatemachineActionPeripheralPrintRegisterBitmap= ruleStatemachineActionPeripheralPrintRegisterBitmap EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2649:2: iv_ruleStatemachineActionPeripheralPrintRegisterBitmap= ruleStatemachineActionPeripheralPrintRegisterBitmap EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintRegisterBitmap_in_entryRuleStatemachineActionPeripheralPrintRegisterBitmap5974);
+            iv_ruleStatemachineActionPeripheralPrintRegisterBitmap=ruleStatemachineActionPeripheralPrintRegisterBitmap();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintRegisterBitmap; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintRegisterBitmap5984); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintRegisterBitmap"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintRegisterBitmap"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2656:1: ruleStatemachineActionPeripheralPrintRegisterBitmap returns [EObject current=null] : (otherlv_0= 'registerBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= 'name' ( (lv_name_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintRegisterBitmap() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_bitmapId_2_0=null;
+        Token otherlv_3=null;
+        Token lv_name_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2659:28: ( (otherlv_0= 'registerBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= 'name' ( (lv_name_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2660:1: (otherlv_0= 'registerBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= 'name' ( (lv_name_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2660:1: (otherlv_0= 'registerBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= 'name' ( (lv_name_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2660:3: otherlv_0= 'registerBitmap' otherlv_1= 'id' ( (lv_bitmapId_2_0= RULE_INT ) ) otherlv_3= 'name' ( (lv_name_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,66,FOLLOW_66_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6021); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getRegisterBitmapKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6033); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getIdKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2668:1: ( (lv_bitmapId_2_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2669:1: (lv_bitmapId_2_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2669:1: (lv_bitmapId_2_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2670:3: lv_bitmapId_2_0= RULE_INT
+            {
+            lv_bitmapId_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6050); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_bitmapId_2_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"bitmapId",
+                      		lv_bitmapId_2_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,67,FOLLOW_67_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6067); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2690:1: ( (lv_name_4_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2691:1: (lv_name_4_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2691:1: (lv_name_4_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2692:3: lv_name_4_0= RULE_STRING
+            {
+            lv_name_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6084); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_4_0, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameSTRINGTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_4_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6101); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getCommercialAtKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2712:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2713:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2713:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2714:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintRegisterBitmap6121); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintRegisterBitmap"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTOpen"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2733:1: entryRuleStatemachineActionPeripheralPTOpen returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTOpen= ruleStatemachineActionPeripheralPTOpen EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTOpen() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTOpen = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2734:2: (iv_ruleStatemachineActionPeripheralPTOpen= ruleStatemachineActionPeripheralPTOpen EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2735:2: iv_ruleStatemachineActionPeripheralPTOpen= ruleStatemachineActionPeripheralPTOpen EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTOpen_in_entryRuleStatemachineActionPeripheralPTOpen6157);
+            iv_ruleStatemachineActionPeripheralPTOpen=ruleStatemachineActionPeripheralPTOpen();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTOpen; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTOpen6167); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTOpen"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTOpen"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2742:1: ruleStatemachineActionPeripheralPTOpen returns [EObject current=null] : (otherlv_0= 'paymentOpen' otherlv_1= 'host' ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'port' ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTOpen() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        EObject lv_host_2_0 = null;
+
+        EObject lv_port_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2745:28: ( (otherlv_0= 'paymentOpen' otherlv_1= 'host' ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'port' ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2746:1: (otherlv_0= 'paymentOpen' otherlv_1= 'host' ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'port' ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2746:1: (otherlv_0= 'paymentOpen' otherlv_1= 'host' ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'port' ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2746:3: otherlv_0= 'paymentOpen' otherlv_1= 'host' ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'port' ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,68,FOLLOW_68_in_ruleStatemachineActionPeripheralPTOpen6204); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPaymentOpenKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,69,FOLLOW_69_in_ruleStatemachineActionPeripheralPTOpen6216); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2754:1: ( (lv_host_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2755:1: (lv_host_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2755:1: (lv_host_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2756:3: lv_host_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTOpen6237);
+            lv_host_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"host",
+                      		lv_host_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,70,FOLLOW_70_in_ruleStatemachineActionPeripheralPTOpen6249); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2776:1: ( (lv_port_4_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2777:1: (lv_port_4_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2777:1: (lv_port_4_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2778:3: lv_port_4_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortStatemachineActionFieldConcatenationParserRuleCall_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTOpen6270);
+            lv_port_4_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"port",
+                      		lv_port_4_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTOpen6282); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getCommercialAtKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2798:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2799:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2799:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2800:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTOpenRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTOpen6302); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTOpen"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTClose"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2819:1: entryRuleStatemachineActionPeripheralPTClose returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTClose= ruleStatemachineActionPeripheralPTClose EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTClose() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTClose = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2820:2: (iv_ruleStatemachineActionPeripheralPTClose= ruleStatemachineActionPeripheralPTClose EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2821:2: iv_ruleStatemachineActionPeripheralPTClose= ruleStatemachineActionPeripheralPTClose EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTCloseRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTClose_in_entryRuleStatemachineActionPeripheralPTClose6338);
+            iv_ruleStatemachineActionPeripheralPTClose=ruleStatemachineActionPeripheralPTClose();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTClose; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTClose6348); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTClose"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTClose"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2828:1: ruleStatemachineActionPeripheralPTClose returns [EObject current=null] : (otherlv_0= 'paymentClose' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTClose() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2831:28: ( (otherlv_0= 'paymentClose' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2832:1: (otherlv_0= 'paymentClose' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2832:1: (otherlv_0= 'paymentClose' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2832:3: otherlv_0= 'paymentClose' otherlv_1= '@' ( (otherlv_2= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,71,FOLLOW_71_in_ruleStatemachineActionPeripheralPTClose6385); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getPaymentCloseKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTClose6397); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getCommercialAtKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2840:1: ( (otherlv_2= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2841:1: (otherlv_2= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2841:1: (otherlv_2= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2842:3: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTCloseRule());
+              	        }
+                      
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTClose6417); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTClose"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTAcknowledge"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2861:1: entryRuleStatemachineActionPeripheralPTAcknowledge returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTAcknowledge= ruleStatemachineActionPeripheralPTAcknowledge EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTAcknowledge() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTAcknowledge = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2862:2: (iv_ruleStatemachineActionPeripheralPTAcknowledge= ruleStatemachineActionPeripheralPTAcknowledge EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2863:2: iv_ruleStatemachineActionPeripheralPTAcknowledge= ruleStatemachineActionPeripheralPTAcknowledge EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTAcknowledge_in_entryRuleStatemachineActionPeripheralPTAcknowledge6453);
+            iv_ruleStatemachineActionPeripheralPTAcknowledge=ruleStatemachineActionPeripheralPTAcknowledge();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTAcknowledge; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTAcknowledge6463); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTAcknowledge"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTAcknowledge"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2870:1: ruleStatemachineActionPeripheralPTAcknowledge returns [EObject current=null] : (otherlv_0= 'paymentAcknowledge' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTAcknowledge() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2873:28: ( (otherlv_0= 'paymentAcknowledge' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2874:1: (otherlv_0= 'paymentAcknowledge' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2874:1: (otherlv_0= 'paymentAcknowledge' otherlv_1= '@' ( (otherlv_2= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2874:3: otherlv_0= 'paymentAcknowledge' otherlv_1= '@' ( (otherlv_2= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,72,FOLLOW_72_in_ruleStatemachineActionPeripheralPTAcknowledge6500); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getPaymentAcknowledgeKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTAcknowledge6512); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getCommercialAtKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2882:1: ( (otherlv_2= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2883:1: (otherlv_2= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2883:1: (otherlv_2= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2884:3: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule());
+              	        }
+                      
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTAcknowledge6532); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTAcknowledge"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTReversal"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2903:1: entryRuleStatemachineActionPeripheralPTReversal returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTReversal= ruleStatemachineActionPeripheralPTReversal EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTReversal() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTReversal = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2904:2: (iv_ruleStatemachineActionPeripheralPTReversal= ruleStatemachineActionPeripheralPTReversal EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2905:2: iv_ruleStatemachineActionPeripheralPTReversal= ruleStatemachineActionPeripheralPTReversal EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTReversal_in_entryRuleStatemachineActionPeripheralPTReversal6568);
+            iv_ruleStatemachineActionPeripheralPTReversal=ruleStatemachineActionPeripheralPTReversal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTReversal; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTReversal6578); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTReversal"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTReversal"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2912:1: ruleStatemachineActionPeripheralPTReversal returns [EObject current=null] : (otherlv_0= 'paymentReversal' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'ofReceipt' ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTReversal() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        EObject lv_password_2_0 = null;
+
+        EObject lv_receipt_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2915:28: ( (otherlv_0= 'paymentReversal' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'ofReceipt' ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2916:1: (otherlv_0= 'paymentReversal' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'ofReceipt' ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2916:1: (otherlv_0= 'paymentReversal' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'ofReceipt' ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2916:3: otherlv_0= 'paymentReversal' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'ofReceipt' ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,73,FOLLOW_73_in_ruleStatemachineActionPeripheralPTReversal6615); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPaymentReversalKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,74,FOLLOW_74_in_ruleStatemachineActionPeripheralPTReversal6627); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getWithPasswordKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2924:1: ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2925:1: (lv_password_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2925:1: (lv_password_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2926:3: lv_password_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTReversal6648);
+            lv_password_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"password",
+                      		lv_password_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,75,FOLLOW_75_in_ruleStatemachineActionPeripheralPTReversal6660); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getOfReceiptKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2946:1: ( (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2947:1: (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2947:1: (lv_receipt_4_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2948:3: lv_receipt_4_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTReversal6681);
+            lv_receipt_4_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"receipt",
+                      		lv_receipt_4_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTReversal6693); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getCommercialAtKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2968:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2969:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2969:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2970:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTReversalRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTReversal6713); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTReversal"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTRegistration"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2989:1: entryRuleStatemachineActionPeripheralPTRegistration returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTRegistration= ruleStatemachineActionPeripheralPTRegistration EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTRegistration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTRegistration = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2990:2: (iv_ruleStatemachineActionPeripheralPTRegistration= ruleStatemachineActionPeripheralPTRegistration EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2991:2: iv_ruleStatemachineActionPeripheralPTRegistration= ruleStatemachineActionPeripheralPTRegistration EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTRegistration_in_entryRuleStatemachineActionPeripheralPTRegistration6749);
+            iv_ruleStatemachineActionPeripheralPTRegistration=ruleStatemachineActionPeripheralPTRegistration();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTRegistration; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTRegistration6759); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTRegistration"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTRegistration"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:2998:1: ruleStatemachineActionPeripheralPTRegistration returns [EObject current=null] : (otherlv_0= 'paymentRegistration' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'configuration' ( (lv_configuration_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTRegistration() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token lv_configuration_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        EObject lv_password_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3001:28: ( (otherlv_0= 'paymentRegistration' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'configuration' ( (lv_configuration_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3002:1: (otherlv_0= 'paymentRegistration' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'configuration' ( (lv_configuration_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3002:1: (otherlv_0= 'paymentRegistration' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'configuration' ( (lv_configuration_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3002:3: otherlv_0= 'paymentRegistration' otherlv_1= 'withPassword' ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= 'configuration' ( (lv_configuration_4_0= RULE_STRING ) ) otherlv_5= '@' ( (otherlv_6= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,76,FOLLOW_76_in_ruleStatemachineActionPeripheralPTRegistration6796); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPaymentRegistrationKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,74,FOLLOW_74_in_ruleStatemachineActionPeripheralPTRegistration6808); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getWithPasswordKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3010:1: ( (lv_password_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3011:1: (lv_password_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3011:1: (lv_password_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3012:3: lv_password_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTRegistration6829);
+            lv_password_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"password",
+                      		lv_password_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,77,FOLLOW_77_in_ruleStatemachineActionPeripheralPTRegistration6841); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3032:1: ( (lv_configuration_4_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3033:1: (lv_configuration_4_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3033:1: (lv_configuration_4_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3034:3: lv_configuration_4_0= RULE_STRING
+            {
+            lv_configuration_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStatemachineActionPeripheralPTRegistration6858); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_configuration_4_0, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationSTRINGTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"configuration",
+                      		lv_configuration_4_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTRegistration6875); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getCommercialAtKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3054:1: ( (otherlv_6= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3055:1: (otherlv_6= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3055:1: (otherlv_6= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3056:3: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTRegistrationRule());
+              	        }
+                      
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTRegistration6895); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_6, grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTRegistration"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTAuthorization"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3075:1: entryRuleStatemachineActionPeripheralPTAuthorization returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTAuthorization= ruleStatemachineActionPeripheralPTAuthorization EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTAuthorization() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTAuthorization = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3076:2: (iv_ruleStatemachineActionPeripheralPTAuthorization= ruleStatemachineActionPeripheralPTAuthorization EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3077:2: iv_ruleStatemachineActionPeripheralPTAuthorization= ruleStatemachineActionPeripheralPTAuthorization EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTAuthorization_in_entryRuleStatemachineActionPeripheralPTAuthorization6931);
+            iv_ruleStatemachineActionPeripheralPTAuthorization=ruleStatemachineActionPeripheralPTAuthorization();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTAuthorization; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTAuthorization6941); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTAuthorization"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTAuthorization"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3084:1: ruleStatemachineActionPeripheralPTAuthorization returns [EObject current=null] : (otherlv_0= 'paymentAuthorization' otherlv_1= 'ofAmount' ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTAuthorization() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        EObject lv_amount_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3087:28: ( (otherlv_0= 'paymentAuthorization' otherlv_1= 'ofAmount' ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3088:1: (otherlv_0= 'paymentAuthorization' otherlv_1= 'ofAmount' ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3088:1: (otherlv_0= 'paymentAuthorization' otherlv_1= 'ofAmount' ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3088:3: otherlv_0= 'paymentAuthorization' otherlv_1= 'ofAmount' ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_3= '@' ( (otherlv_4= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,78,FOLLOW_78_in_ruleStatemachineActionPeripheralPTAuthorization6978); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getPaymentAuthorizationKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,79,FOLLOW_79_in_ruleStatemachineActionPeripheralPTAuthorization6990); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getOfAmountKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3096:1: ( (lv_amount_2_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3097:1: (lv_amount_2_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3097:1: (lv_amount_2_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3098:3: lv_amount_2_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getAmountStatemachineActionFieldConcatenationParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineActionPeripheralPTAuthorization7011);
+            lv_amount_2_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"amount",
+                      		lv_amount_2_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleStatemachineActionPeripheralPTAuthorization7023); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getCommercialAtKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3118:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3119:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3119:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3120:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTAuthorization7043); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTAuthorization"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPTResponse"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3139:1: entryRuleStatemachineActionPeripheralPTResponse returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPTResponse= ruleStatemachineActionPeripheralPTResponse EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPTResponse() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPTResponse = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3140:2: (iv_ruleStatemachineActionPeripheralPTResponse= ruleStatemachineActionPeripheralPTResponse EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3141:2: iv_ruleStatemachineActionPeripheralPTResponse= ruleStatemachineActionPeripheralPTResponse EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPTResponseRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTResponse_in_entryRuleStatemachineActionPeripheralPTResponse7079);
+            iv_ruleStatemachineActionPeripheralPTResponse=ruleStatemachineActionPeripheralPTResponse();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPTResponse; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPTResponse7089); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPTResponse"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPTResponse"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3148:1: ruleStatemachineActionPeripheralPTResponse returns [EObject current=null] : (otherlv_0= 'paymentResponse' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineActionPeripheralPTResponse() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3151:28: ( (otherlv_0= 'paymentResponse' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3152:1: (otherlv_0= 'paymentResponse' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3152:1: (otherlv_0= 'paymentResponse' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3152:3: otherlv_0= 'paymentResponse' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,80,FOLLOW_80_in_ruleStatemachineActionPeripheralPTResponse7126); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getPaymentResponseKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,81,FOLLOW_81_in_ruleStatemachineActionPeripheralPTResponse7138); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getFromKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3160:1: ( (otherlv_2= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3161:1: (otherlv_2= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3161:1: (otherlv_2= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3162:3: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPTResponseRule());
+              	        }
+                      
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPTResponse7158); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_2, grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getDeviceStatemachinePeripheralDevicePTCrossReference_2_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPTResponse"
+
+
+    // $ANTLR start "entryRuleStatemachineActionPeripheralPrintReport"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3181:1: entryRuleStatemachineActionPeripheralPrintReport returns [EObject current=null] : iv_ruleStatemachineActionPeripheralPrintReport= ruleStatemachineActionPeripheralPrintReport EOF ;
+    public final EObject entryRuleStatemachineActionPeripheralPrintReport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionPeripheralPrintReport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3182:2: (iv_ruleStatemachineActionPeripheralPrintReport= ruleStatemachineActionPeripheralPrintReport EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3183:2: iv_ruleStatemachineActionPeripheralPrintReport= ruleStatemachineActionPeripheralPrintReport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionPeripheralPrintReportRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionPeripheralPrintReport_in_entryRuleStatemachineActionPeripheralPrintReport7194);
+            iv_ruleStatemachineActionPeripheralPrintReport=ruleStatemachineActionPeripheralPrintReport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionPeripheralPrintReport; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionPeripheralPrintReport7204); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionPeripheralPrintReport"
+
+
+    // $ANTLR start "ruleStatemachineActionPeripheralPrintReport"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3190:1: ruleStatemachineActionPeripheralPrintReport returns [EObject current=null] : (otherlv_0= 'printReport' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )? ) ;
+    public final EObject ruleStatemachineActionPeripheralPrintReport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_hasFilter_2_0=null;
+        Token otherlv_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3193:28: ( (otherlv_0= 'printReport' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3194:1: (otherlv_0= 'printReport' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3194:1: (otherlv_0= 'printReport' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3194:3: otherlv_0= 'printReport' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )?
+            {
+            otherlv_0=(Token)match(input,82,FOLLOW_82_in_ruleStatemachineActionPeripheralPrintReport7241); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getPrintReportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3198:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3199:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3199:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3200:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintReport7261); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getReportReportCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3211:2: ( ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) ) )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==81) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3211:3: ( (lv_hasFilter_2_0= 'from' ) ) ( (otherlv_3= RULE_ID ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3211:3: ( (lv_hasFilter_2_0= 'from' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3212:1: (lv_hasFilter_2_0= 'from' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3212:1: (lv_hasFilter_2_0= 'from' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3213:3: lv_hasFilter_2_0= 'from'
+                    {
+                    lv_hasFilter_2_0=(Token)match(input,81,FOLLOW_81_in_ruleStatemachineActionPeripheralPrintReport7280); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasFilter_2_0, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getHasFilterFromKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasFilter", true, "from");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3226:2: ( (otherlv_3= RULE_ID ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3227:1: (otherlv_3= RULE_ID )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3227:1: (otherlv_3= RULE_ID )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3228:3: otherlv_3= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineActionPeripheralPrintReportRule());
+                      	        }
+                              
+                    }
+                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineActionPeripheralPrintReport7313); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		newLeafNode(otherlv_3, grammarAccess.getStatemachineActionPeripheralPrintReportAccess().getKeyStatemachineStorageCrossReference_2_1_0()); 
+                      	
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionPeripheralPrintReport"
+
+
+    // $ANTLR start "entryRuleStatemachineActionFieldSource"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3247:1: entryRuleStatemachineActionFieldSource returns [EObject current=null] : iv_ruleStatemachineActionFieldSource= ruleStatemachineActionFieldSource EOF ;
+    public final EObject entryRuleStatemachineActionFieldSource() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineActionFieldSource = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3248:2: (iv_ruleStatemachineActionFieldSource= ruleStatemachineActionFieldSource EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3249:2: iv_ruleStatemachineActionFieldSource= ruleStatemachineActionFieldSource EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineActionFieldSourceRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldSource_in_entryRuleStatemachineActionFieldSource7351);
+            iv_ruleStatemachineActionFieldSource=ruleStatemachineActionFieldSource();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineActionFieldSource; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineActionFieldSource7361); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineActionFieldSource"
+
+
+    // $ANTLR start "ruleStatemachineActionFieldSource"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3256:1: ruleStatemachineActionFieldSource returns [EObject current=null] : (this_StatemachineActionFieldSourceString_0= ruleStatemachineActionFieldSourceString | this_StatemachineActionFieldSourceNumber_1= ruleStatemachineActionFieldSourceNumber | this_StatemachineActionFieldSourceEvaluate_2= ruleStatemachineActionFieldSourceEvaluate | this_StatemachineActionFieldSourceTranslate_3= ruleStatemachineActionFieldSourceTranslate | this_StatemachineActionFieldGet_4= ruleStatemachineActionFieldGet | this_StatemachineFunction_5= ruleStatemachineFunction | this_StatemachineStorageRetrieve_6= ruleStatemachineStorageRetrieve | this_StatemachineActionFieldSourceDtoAttribute_7= ruleStatemachineActionFieldSourceDtoAttribute | this_StatemachineActionFieldSourceEvent_8= ruleStatemachineActionFieldSourceEvent | this_StatemachineActionPeripheralPTResponse_9= ruleStatemachineActionPeripheralPTResponse ) ;
+    public final EObject ruleStatemachineActionFieldSource() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_StatemachineActionFieldSourceString_0 = null;
+
+        EObject this_StatemachineActionFieldSourceNumber_1 = null;
+
+        EObject this_StatemachineActionFieldSourceEvaluate_2 = null;
+
+        EObject this_StatemachineActionFieldSourceTranslate_3 = null;
+
+        EObject this_StatemachineActionFieldGet_4 = null;
+
+        EObject this_StatemachineFunction_5 = null;
+
+        EObject this_StatemachineStorageRetrieve_6 = null;
+
+        EObject this_StatemachineActionFieldSourceDtoAttribute_7 = null;
+
+        EObject this_StatemachineActionFieldSourceEvent_8 = null;
+
+        EObject this_StatemachineActionPeripheralPTResponse_9 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3259:28: ( (this_StatemachineActionFieldSourceString_0= ruleStatemachineActionFieldSourceString | this_StatemachineActionFieldSourceNumber_1= ruleStatemachineActionFieldSourceNumber | this_StatemachineActionFieldSourceEvaluate_2= ruleStatemachineActionFieldSourceEvaluate | this_StatemachineActionFieldSourceTranslate_3= ruleStatemachineActionFieldSourceTranslate | this_StatemachineActionFieldGet_4= ruleStatemachineActionFieldGet | this_StatemachineFunction_5= ruleStatemachineFunction | this_StatemachineStorageRetrieve_6= ruleStatemachineStorageRetrieve | this_StatemachineActionFieldSourceDtoAttribute_7= ruleStatemachineActionFieldSourceDtoAttribute | this_StatemachineActionFieldSourceEvent_8= ruleStatemachineActionFieldSourceEvent | this_StatemachineActionPeripheralPTResponse_9= ruleStatemachineActionPeripheralPTResponse ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3260:1: (this_StatemachineActionFieldSourceString_0= ruleStatemachineActionFieldSourceString | this_StatemachineActionFieldSourceNumber_1= ruleStatemachineActionFieldSourceNumber | this_StatemachineActionFieldSourceEvaluate_2= ruleStatemachineActionFieldSourceEvaluate | this_StatemachineActionFieldSourceTranslate_3= ruleStatemachineActionFieldSourceTranslate | this_StatemachineActionFieldGet_4= ruleStatemachineActionFieldGet | this_StatemachineFunction_5= ruleStatemachineFunction | this_StatemachineStorageRetrieve_6= ruleStatemachineStorageRetrieve | this_StatemachineActionFieldSourceDtoAttribute_7= ruleStatemachineActionFieldSourceDtoAttribute | this_StatemachineActionFieldSourceEvent_8= ruleStatemachineActionFieldSourceEvent | this_StatemachineActionPeripheralPTResponse_9= ruleStatemachineActionPeripheralPTResponse )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3260:1: (this_StatemachineActionFieldSourceString_0= ruleStatemachineActionFieldSourceString | this_StatemachineActionFieldSourceNumber_1= ruleStatemachineActionFieldSourceNumber | this_StatemachineActionFieldSourceEvaluate_2= ruleStatemachineActionFieldSourceEvaluate | this_StatemachineActionFieldSourceTranslate_3= ruleStatemachineActionFieldSourceTranslate | this_StatemachineActionFieldGet_4= ruleStatemachineActionFieldGet | this_StatemachineFunction_5= ruleStatemachineFunction | this_StatemachineStorageRetrieve_6= ruleStatemachineStorageRetrieve | this_StatemachineActionFieldSourceDtoAttribute_7= ruleStatemachineActionFieldSourceDtoAttribute | this_StatemachineActionFieldSourceEvent_8= ruleStatemachineActionFieldSourceEvent | this_StatemachineActionPeripheralPTResponse_9= ruleStatemachineActionPeripheralPTResponse )
+            int alt22=10;
+            switch ( input.LA(1) ) {
+            case RULE_STRING:
+                {
+                alt22=1;
+                }
+                break;
+            case RULE_INT:
+            case 126:
+                {
+                alt22=2;
+                }
+                break;
+            case 199:
+            case 200:
+            case 201:
+            case 202:
+            case 203:
+            case 204:
+            case 205:
+            case 206:
+            case 207:
+            case 208:
+            case 209:
+            case 210:
+            case 211:
+            case 212:
+                {
+                alt22=3;
+                }
+                break;
+            case 95:
+                {
+                alt22=4;
+                }
+                break;
+            case 98:
+                {
+                alt22=5;
+                }
+                break;
+            case 90:
+                {
+                alt22=6;
+                }
+                break;
+            case 94:
+                {
+                alt22=7;
+                }
+                break;
+            case 96:
+                {
+                alt22=8;
+                }
+                break;
+            case 24:
+                {
+                alt22=9;
+                }
+                break;
+            case 80:
+                {
+                alt22=10;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt22) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3261:5: this_StatemachineActionFieldSourceString_0= ruleStatemachineActionFieldSourceString
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceStringParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceString_in_ruleStatemachineActionFieldSource7408);
+                    this_StatemachineActionFieldSourceString_0=ruleStatemachineActionFieldSourceString();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceString_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3271:5: this_StatemachineActionFieldSourceNumber_1= ruleStatemachineActionFieldSourceNumber
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceNumberParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceNumber_in_ruleStatemachineActionFieldSource7435);
+                    this_StatemachineActionFieldSourceNumber_1=ruleStatemachineActionFieldSourceNumber();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceNumber_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3281:5: this_StatemachineActionFieldSourceEvaluate_2= ruleStatemachineActionFieldSourceEvaluate
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEvaluateParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceEvaluate_in_ruleStatemachineActionFieldSource7462);
+                    this_StatemachineActionFieldSourceEvaluate_2=ruleStatemachineActionFieldSourceEvaluate();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceEvaluate_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3291:5: this_StatemachineActionFieldSourceTranslate_3= ruleStatemachineActionFieldSourceTranslate
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceTranslateParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceTranslate_in_ruleStatemachineActionFieldSource7489);
+                    this_StatemachineActionFieldSourceTranslate_3=ruleStatemachineActionFieldSourceTranslate();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceTranslate_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3301:5: this_StatemachineActionFieldGet_4= ruleStatemachineActionFieldGet
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldGetParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldGet_in_ruleStatemachineActionFieldSource7516);
+                    this_StatemachineActionFieldGet_4=ruleStatemachineActionFieldGet();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldGet_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3311:5: this_StatemachineFunction_5= ruleStatemachineFunction
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineFunctionParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineFunction_in_ruleStatemachineActionFieldSource7543);
+                    this_StatemachineFunction_5=ruleStatemachineFunction();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineFunction_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3321:5: this_StatemachineStorageRetrieve_6= ruleStatemachineStorageRetrieve
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineStorageRetrieveParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineStorageRetrieve_in_ruleStatemachineActionFieldSource7570);
+                    this_StatemachineStorageRetrieve_6=ruleStatemachineStorageRetrieve();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineStorageRetrieve_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3331:5: this_StatemachineActionFieldSourceDtoAttribute_7= ruleStatemachineActionFieldSourceDtoAttribute
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceDtoAttributeParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceDtoAttribute_in_ruleStatemachineActionFieldSource7597);
+                    this_StatemachineActionFieldSourceDtoAttribute_7=ruleStatemachineActionFieldSourceDtoAttribute();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceDtoAttribute_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3341:5: this_StatemachineActionFieldSourceEvent_8= ruleStatemachineActionFieldSourceEvent
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionFieldSourceEventParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionFieldSourceEvent_in_ruleStatemachineActionFieldSource7624);
+                    this_StatemachineActionFieldSourceEvent_8=ruleStatemachineActionFieldSourceEvent();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionFieldSourceEvent_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3351:5: this_StatemachineActionPeripheralPTResponse_9= ruleStatemachineActionPeripheralPTResponse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getStatemachineActionFieldSourceAccess().getStatemachineActionPeripheralPTResponseParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineActionPeripheralPTResponse_in_ruleStatemachineActionFieldSource7651);
+                    this_StatemachineActionPeripheralPTResponse_9=ruleStatemachineActionPeripheralPTResponse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_StatemachineActionPeripheralPTResponse_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineActionFieldSource"
+
+
+    // $ANTLR start "entryRuleStatemachineOperation"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3367:1: entryRuleStatemachineOperation returns [EObject current=null] : iv_ruleStatemachineOperation= ruleStatemachineOperation EOF ;
+    public final EObject entryRuleStatemachineOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3368:2: (iv_ruleStatemachineOperation= ruleStatemachineOperation EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3369:2: iv_ruleStatemachineOperation= ruleStatemachineOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineOperation_in_entryRuleStatemachineOperation7686);
+            iv_ruleStatemachineOperation=ruleStatemachineOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineOperation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineOperation7696); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineOperation"
+
+
+    // $ANTLR start "ruleStatemachineOperation"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3376:1: ruleStatemachineOperation returns [EObject current=null] : (otherlv_0= 'operation' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' ) ;
+    public final EObject ruleStatemachineOperation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        EObject lv_first_3_0 = null;
+
+        EObject lv_more_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3379:28: ( (otherlv_0= 'operation' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3380:1: (otherlv_0= 'operation' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3380:1: (otherlv_0= 'operation' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3380:3: otherlv_0= 'operation' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')'
+            {
+            otherlv_0=(Token)match(input,83,FOLLOW_83_in_ruleStatemachineOperation7733); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineOperationAccess().getOperationKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3384:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3385:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3385:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3386:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineOperationRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineOperation7753); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineOperationAccess().getOperationFunctionLibraryOperationCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,84,FOLLOW_84_in_ruleStatemachineOperation7765); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineOperationAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3401:1: ( (lv_first_3_0= ruleStatemachineOperationParameter ) )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( ((LA23_0>=RULE_INT && LA23_0<=RULE_STRING)||LA23_0==24||LA23_0==80||LA23_0==90||(LA23_0>=94 && LA23_0<=96)||LA23_0==98||LA23_0==126||(LA23_0>=199 && LA23_0<=212)) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3402:1: (lv_first_3_0= ruleStatemachineOperationParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3402:1: (lv_first_3_0= ruleStatemachineOperationParameter )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3403:3: lv_first_3_0= ruleStatemachineOperationParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineOperationAccess().getFirstStatemachineOperationParameterParserRuleCall_3_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineOperationParameter_in_ruleStatemachineOperation7786);
+                    lv_first_3_0=ruleStatemachineOperationParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineOperationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"first",
+                              		lv_first_3_0, 
+                              		"StatemachineOperationParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3419:3: ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )*
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( (LA24_0==99) ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3420:1: (lv_more_4_0= ruleStatemachineOperationParameterMore )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3420:1: (lv_more_4_0= ruleStatemachineOperationParameterMore )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3421:3: lv_more_4_0= ruleStatemachineOperationParameterMore
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineOperationAccess().getMoreStatemachineOperationParameterMoreParserRuleCall_4_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineOperationParameterMore_in_ruleStatemachineOperation7808);
+            	    lv_more_4_0=ruleStatemachineOperationParameterMore();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineOperationRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"more",
+            	              		lv_more_4_0, 
+            	              		"StatemachineOperationParameterMore");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop24;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,85,FOLLOW_85_in_ruleStatemachineOperation7821); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineOperationAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineOperation"
+
+
+    // $ANTLR start "entryRuleStatemachineGuard"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3449:1: entryRuleStatemachineGuard returns [EObject current=null] : iv_ruleStatemachineGuard= ruleStatemachineGuard EOF ;
+    public final EObject entryRuleStatemachineGuard() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineGuard = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3450:2: (iv_ruleStatemachineGuard= ruleStatemachineGuard EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3451:2: iv_ruleStatemachineGuard= ruleStatemachineGuard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineGuardRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineGuard_in_entryRuleStatemachineGuard7857);
+            iv_ruleStatemachineGuard=ruleStatemachineGuard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineGuard; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineGuard7867); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineGuard"
+
+
+    // $ANTLR start "ruleStatemachineGuard"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3458:1: ruleStatemachineGuard returns [EObject current=null] : (otherlv_0= 'guard' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )? ) ;
+    public final EObject ruleStatemachineGuard() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_hasOnFail_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_onFailCaption_4_0 = null;
+
+        AntlrDatatypeRuleToken lv_onFailDescription_6_0 = null;
+
+        Enumerator lv_onFailType_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3461:28: ( (otherlv_0= 'guard' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3462:1: (otherlv_0= 'guard' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3462:1: (otherlv_0= 'guard' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )? )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3462:3: otherlv_0= 'guard' ( (otherlv_1= RULE_ID ) ) ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )?
+            {
+            otherlv_0=(Token)match(input,86,FOLLOW_86_in_ruleStatemachineGuard7904); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineGuardAccess().getGuardKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3466:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3467:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3467:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3468:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineGuardRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineGuard7924); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineGuardAccess().getGuardFunctionLibraryGuardCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3479:2: ( ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) ) )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==87) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3479:3: ( (lv_hasOnFail_2_0= 'onFail' ) ) otherlv_3= 'caption' ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) ) otherlv_5= 'description' ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) ) otherlv_7= 'type' ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3479:3: ( (lv_hasOnFail_2_0= 'onFail' ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3480:1: (lv_hasOnFail_2_0= 'onFail' )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3480:1: (lv_hasOnFail_2_0= 'onFail' )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3481:3: lv_hasOnFail_2_0= 'onFail'
+                    {
+                    lv_hasOnFail_2_0=(Token)match(input,87,FOLLOW_87_in_ruleStatemachineGuard7943); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasOnFail_2_0, grammarAccess.getStatemachineGuardAccess().getHasOnFailOnFailKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getStatemachineGuardRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasOnFail", true, "onFail");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_3=(Token)match(input,88,FOLLOW_88_in_ruleStatemachineGuard7968); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getStatemachineGuardAccess().getCaptionKeyword_2_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3498:1: ( (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3499:1: (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3499:1: (lv_onFailCaption_4_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3500:3: lv_onFailCaption_4_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailCaptionTRANSLATABLESTRINGParserRuleCall_2_2_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleStatemachineGuard7989);
+                    lv_onFailCaption_4_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"onFailCaption",
+                              		lv_onFailCaption_4_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_5=(Token)match(input,89,FOLLOW_89_in_ruleStatemachineGuard8001); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getStatemachineGuardAccess().getDescriptionKeyword_2_3());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3520:1: ( (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3521:1: (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3521:1: (lv_onFailDescription_6_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3522:3: lv_onFailDescription_6_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailDescriptionTRANSLATABLESTRINGParserRuleCall_2_4_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleStatemachineGuard8022);
+                    lv_onFailDescription_6_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"onFailDescription",
+                              		lv_onFailDescription_6_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_7=(Token)match(input,51,FOLLOW_51_in_ruleStatemachineGuard8034); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_7, grammarAccess.getStatemachineGuardAccess().getTypeKeyword_2_5());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3542:1: ( (lv_onFailType_8_0= ruleStatemachineUserMessageType ) )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3543:1: (lv_onFailType_8_0= ruleStatemachineUserMessageType )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3543:1: (lv_onFailType_8_0= ruleStatemachineUserMessageType )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3544:3: lv_onFailType_8_0= ruleStatemachineUserMessageType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineGuardAccess().getOnFailTypeStatemachineUserMessageTypeEnumRuleCall_2_6_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineUserMessageType_in_ruleStatemachineGuard8055);
+                    lv_onFailType_8_0=ruleStatemachineUserMessageType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineGuardRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"onFailType",
+                              		lv_onFailType_8_0, 
+                              		"StatemachineUserMessageType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineGuard"
+
+
+    // $ANTLR start "entryRuleStatemachineFunction"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3568:1: entryRuleStatemachineFunction returns [EObject current=null] : iv_ruleStatemachineFunction= ruleStatemachineFunction EOF ;
+    public final EObject entryRuleStatemachineFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3569:2: (iv_ruleStatemachineFunction= ruleStatemachineFunction EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3570:2: iv_ruleStatemachineFunction= ruleStatemachineFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineFunction_in_entryRuleStatemachineFunction8093);
+            iv_ruleStatemachineFunction=ruleStatemachineFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineFunction8103); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineFunction"
+
+
+    // $ANTLR start "ruleStatemachineFunction"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3577:1: ruleStatemachineFunction returns [EObject current=null] : (otherlv_0= 'function' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' ) ;
+    public final EObject ruleStatemachineFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        EObject lv_first_3_0 = null;
+
+        EObject lv_more_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3580:28: ( (otherlv_0= 'function' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3581:1: (otherlv_0= 'function' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3581:1: (otherlv_0= 'function' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')' )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3581:3: otherlv_0= 'function' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_first_3_0= ruleStatemachineOperationParameter ) )? ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )* otherlv_5= ')'
+            {
+            otherlv_0=(Token)match(input,90,FOLLOW_90_in_ruleStatemachineFunction8140); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineFunctionAccess().getFunctionKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3585:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3586:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3586:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3587:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineFunctionRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineFunction8160); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getStatemachineFunctionAccess().getFunctionFunctionLibraryFunctionCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,84,FOLLOW_84_in_ruleStatemachineFunction8172); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineFunctionAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3602:1: ( (lv_first_3_0= ruleStatemachineOperationParameter ) )?
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( ((LA26_0>=RULE_INT && LA26_0<=RULE_STRING)||LA26_0==24||LA26_0==80||LA26_0==90||(LA26_0>=94 && LA26_0<=96)||LA26_0==98||LA26_0==126||(LA26_0>=199 && LA26_0<=212)) ) {
+                alt26=1;
+            }
+            switch (alt26) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3603:1: (lv_first_3_0= ruleStatemachineOperationParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3603:1: (lv_first_3_0= ruleStatemachineOperationParameter )
+                    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3604:3: lv_first_3_0= ruleStatemachineOperationParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getStatemachineFunctionAccess().getFirstStatemachineOperationParameterParserRuleCall_3_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleStatemachineOperationParameter_in_ruleStatemachineFunction8193);
+                    lv_first_3_0=ruleStatemachineOperationParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getStatemachineFunctionRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"first",
+                              		lv_first_3_0, 
+                              		"StatemachineOperationParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3620:3: ( (lv_more_4_0= ruleStatemachineOperationParameterMore ) )*
+            loop27:
+            do {
+                int alt27=2;
+                int LA27_0 = input.LA(1);
+
+                if ( (LA27_0==99) ) {
+                    alt27=1;
+                }
+
+
+                switch (alt27) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3621:1: (lv_more_4_0= ruleStatemachineOperationParameterMore )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3621:1: (lv_more_4_0= ruleStatemachineOperationParameterMore )
+            	    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3622:3: lv_more_4_0= ruleStatemachineOperationParameterMore
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getStatemachineFunctionAccess().getMoreStatemachineOperationParameterMoreParserRuleCall_4_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleStatemachineOperationParameterMore_in_ruleStatemachineFunction8215);
+            	    lv_more_4_0=ruleStatemachineOperationParameterMore();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getStatemachineFunctionRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"more",
+            	              		lv_more_4_0, 
+            	              		"StatemachineOperationParameterMore");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop27;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,85,FOLLOW_85_in_ruleStatemachineFunction8228); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getStatemachineFunctionAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineFunction"
+
+
+    // $ANTLR start "entryRuleStatemachineStorage"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3650:1: entryRuleStatemachineStorage returns [EObject current=null] : iv_ruleStatemachineStorage= ruleStatemachineStorage EOF ;
+    public final EObject entryRuleStatemachineStorage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineStorage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3651:2: (iv_ruleStatemachineStorage= ruleStatemachineStorage EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3652:2: iv_ruleStatemachineStorage= ruleStatemachineStorage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineStorageRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineStorage_in_entryRuleStatemachineStorage8264);
+            iv_ruleStatemachineStorage=ruleStatemachineStorage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineStorage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineStorage8274); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineStorage"
+
+
+    // $ANTLR start "ruleStatemachineStorage"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3659:1: ruleStatemachineStorage returns [EObject current=null] : (otherlv_0= 'store' ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_2= 'with' ( (lv_key_3_0= RULE_ID ) ) otherlv_4= '.' ( (lv_attribute_5_0= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineStorage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_key_3_0=null;
+        Token otherlv_4=null;
+        Token lv_attribute_5_0=null;
+        EObject lv_content_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3662:28: ( (otherlv_0= 'store' ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_2= 'with' ( (lv_key_3_0= RULE_ID ) ) otherlv_4= '.' ( (lv_attribute_5_0= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3663:1: (otherlv_0= 'store' ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_2= 'with' ( (lv_key_3_0= RULE_ID ) ) otherlv_4= '.' ( (lv_attribute_5_0= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3663:1: (otherlv_0= 'store' ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_2= 'with' ( (lv_key_3_0= RULE_ID ) ) otherlv_4= '.' ( (lv_attribute_5_0= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3663:3: otherlv_0= 'store' ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) ) otherlv_2= 'with' ( (lv_key_3_0= RULE_ID ) ) otherlv_4= '.' ( (lv_attribute_5_0= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,91,FOLLOW_91_in_ruleStatemachineStorage8311); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineStorageAccess().getStoreKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3667:1: ( (lv_content_1_0= ruleStatemachineActionFieldConcatenation ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3668:1: (lv_content_1_0= ruleStatemachineActionFieldConcatenation )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3668:1: (lv_content_1_0= ruleStatemachineActionFieldConcatenation )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3669:3: lv_content_1_0= ruleStatemachineActionFieldConcatenation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getStatemachineStorageAccess().getContentStatemachineActionFieldConcatenationParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleStatemachineActionFieldConcatenation_in_ruleStatemachineStorage8332);
+            lv_content_1_0=ruleStatemachineActionFieldConcatenation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getStatemachineStorageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"content",
+                      		lv_content_1_0, 
+                      		"StatemachineActionFieldConcatenation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,92,FOLLOW_92_in_ruleStatemachineStorage8344); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getStatemachineStorageAccess().getWithKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3689:1: ( (lv_key_3_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3690:1: (lv_key_3_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3690:1: (lv_key_3_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3691:3: lv_key_3_0= RULE_ID
+            {
+            lv_key_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineStorage8361); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_key_3_0, grammarAccess.getStatemachineStorageAccess().getKeyIDTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineStorageRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"key",
+                      		lv_key_3_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,93,FOLLOW_93_in_ruleStatemachineStorage8378); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getStatemachineStorageAccess().getFullStopKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3711:1: ( (lv_attribute_5_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3712:1: (lv_attribute_5_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3712:1: (lv_attribute_5_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3713:3: lv_attribute_5_0= RULE_ID
+            {
+            lv_attribute_5_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineStorage8395); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_attribute_5_0, grammarAccess.getStatemachineStorageAccess().getAttributeIDTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineStorageRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"attribute",
+                      		lv_attribute_5_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStatemachineStorage"
+
+
+    // $ANTLR start "entryRuleStatemachineStorageRetrieve"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3737:1: entryRuleStatemachineStorageRetrieve returns [EObject current=null] : iv_ruleStatemachineStorageRetrieve= ruleStatemachineStorageRetrieve EOF ;
+    public final EObject entryRuleStatemachineStorageRetrieve() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStatemachineStorageRetrieve = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3738:2: (iv_ruleStatemachineStorageRetrieve= ruleStatemachineStorageRetrieve EOF )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3739:2: iv_ruleStatemachineStorageRetrieve= ruleStatemachineStorageRetrieve EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getStatemachineStorageRetrieveRule()); 
+            }
+            pushFollow(FOLLOW_ruleStatemachineStorageRetrieve_in_entryRuleStatemachineStorageRetrieve8436);
+            iv_ruleStatemachineStorageRetrieve=ruleStatemachineStorageRetrieve();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleStatemachineStorageRetrieve; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStatemachineStorageRetrieve8446); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStatemachineStorageRetrieve"
+
+
+    // $ANTLR start "ruleStatemachineStorageRetrieve"
+    // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3746:1: ruleStatemachineStorageRetrieve returns [EObject current=null] : (otherlv_0= 'retrieve' otherlv_1= 'from' ( (lv_key_2_0= RULE_ID ) ) otherlv_3= '.' ( (lv_attribute_4_0= RULE_ID ) ) ) ;
+    public final EObject ruleStatemachineStorageRetrieve() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_key_2_0=null;
+        Token otherlv_3=null;
+        Token lv_attribute_4_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3749:28: ( (otherlv_0= 'retrieve' otherlv_1= 'from' ( (lv_key_2_0= RULE_ID ) ) otherlv_3= '.' ( (lv_attribute_4_0= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3750:1: (otherlv_0= 'retrieve' otherlv_1= 'from' ( (lv_key_2_0= RULE_ID ) ) otherlv_3= '.' ( (lv_attribute_4_0= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3750:1: (otherlv_0= 'retrieve' otherlv_1= 'from' ( (lv_key_2_0= RULE_ID ) ) otherlv_3= '.' ( (lv_attribute_4_0= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3750:3: otherlv_0= 'retrieve' otherlv_1= 'from' ( (lv_key_2_0= RULE_ID ) ) otherlv_3= '.' ( (lv_attribute_4_0= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,94,FOLLOW_94_in_ruleStatemachineStorageRetrieve8483); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getStatemachineStorageRetrieveAccess().getRetrieveKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,81,FOLLOW_81_in_ruleStatemachineStorageRetrieve8495); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getStatemachineStorageRetrieveAccess().getFromKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3758:1: ( (lv_key_2_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3759:1: (lv_key_2_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3759:1: (lv_key_2_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3760:3: lv_key_2_0= RULE_ID
+            {
+            lv_key_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineStorageRetrieve8512); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_key_2_0, grammarAccess.getStatemachineStorageRetrieveAccess().getKeyIDTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineStorageRetrieveRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"key",
+                      		lv_key_2_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,93,FOLLOW_93_in_ruleStatemachineStorageRetrieve8529); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getStatemachineStorageRetrieveAccess().getFullStopKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3780:1: ( (lv_attribute_4_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3781:1: (lv_attribute_4_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3781:1: (lv_attribute_4_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/parser/antlr/internal/InternalStatemachineDSL.g:3782:3: lv_attribute_4_0= RULE_ID
+            {
+            lv_attribute_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStatemachineStorageRetrieve8546); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_attribute_4_0, grammarAccess.getStatemachineStorageRetrieveAccess().getAttributeIDTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getStatemachineStorageRetrieveRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"attribute",
+                      		lv_attribute_4_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSemanticSequencer.java
new file mode 100644
index 0000000..07fd3f3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSemanticSequencer.java
@@ -0,0 +1,3420 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFunction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineModel;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+import org.eclipse.osbp.xtext.statemachine.services.StatemachineDSLGrammarAccess;
+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 StatemachineDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private StatemachineDSLGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == StatemachineDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case StatemachineDSLPackage.STATEMACHINE:
+				if(context == grammarAccess.getStatemachineRule()) {
+					sequence_Statemachine(context, (Statemachine) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_CAPTION:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionButtonCaptionRule()) {
+					sequence_StatemachineActionButtonCaption(context, (StatemachineActionButtonCaption) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_BUTTON_IMAGE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionButtonImageRule()) {
+					sequence_StatemachineActionButtonImage(context, (StatemachineActionButtonImage) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionConditionalTransitionRule()) {
+					sequence_StatemachineActionConditionalTransition(context, (StatemachineActionConditionalTransition) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_DTO_FIND:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionDTOFindRule()) {
+					sequence_StatemachineActionDTOFind(context, (StatemachineActionDTOFind) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CLEAR:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionFieldClearRule()) {
+					sequence_StatemachineActionFieldClear(context, (StatemachineActionFieldClear) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_CONCATENATION:
+				if(context == grammarAccess.getStatemachineActionFieldConcatenationRule()) {
+					sequence_StatemachineActionFieldConcatenation(context, (StatemachineActionFieldConcatenation) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_GET:
+				if(context == grammarAccess.getStatemachineActionFieldGetMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceMoreRule()) {
+					sequence_StatemachineActionFieldGetMore(context, (StatemachineActionFieldGet) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldGetRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceRule()) {
+					sequence_StatemachineActionFieldGet(context, (StatemachineActionFieldGet) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_REMOVE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionFieldRemoveRule()) {
+					sequence_StatemachineActionFieldRemove(context, (StatemachineActionFieldRemove) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SET:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSetRule()) {
+					sequence_StatemachineActionFieldSet(context, (StatemachineActionFieldSet) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE:
+				if(context == grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceMoreRule()) {
+					sequence_StatemachineActionFieldSourceDtoAttributeMore(context, (StatemachineActionFieldSourceDtoAttribute) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceDtoAttributeRule()) {
+					sequence_StatemachineActionFieldSourceDtoAttribute(context, (StatemachineActionFieldSourceDtoAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE:
+				if(context == grammarAccess.getStatemachineActionFieldSourceEvaluateMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceMoreRule()) {
+					sequence_StatemachineActionFieldSourceEvaluateMore(context, (StatemachineActionFieldSourceEvaluate) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceEvaluateRule()) {
+					sequence_StatemachineActionFieldSourceEvaluate(context, (StatemachineActionFieldSourceEvaluate) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_EVENT:
+				if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceEventRule()) {
+					sequence_StatemachineActionFieldSourceEvent(context, (StatemachineActionFieldSourceEvent) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER:
+				if(context == grammarAccess.getStatemachineActionFieldSourceMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceNumberMoreRule()) {
+					sequence_StatemachineActionFieldSourceNumberMore(context, (StatemachineActionFieldSourceNumber) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceNumberRule()) {
+					sequence_StatemachineActionFieldSourceNumber(context, (StatemachineActionFieldSourceNumber) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_STRING:
+				if(context == grammarAccess.getStatemachineActionFieldSourceMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceStringMoreRule()) {
+					sequence_StatemachineActionFieldSourceStringMore(context, (StatemachineActionFieldSourceString) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceStringRule()) {
+					sequence_StatemachineActionFieldSourceString(context, (StatemachineActionFieldSourceString) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE:
+				if(context == grammarAccess.getStatemachineActionFieldSourceMoreRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceTranslateMoreRule()) {
+					sequence_StatemachineActionFieldSourceTranslateMore(context, (StatemachineActionFieldSourceTranslate) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionFieldSourceTranslateRule()) {
+					sequence_StatemachineActionFieldSourceTranslate(context, (StatemachineActionFieldSourceTranslate) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_INVISIBLE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionItemInvisibleRule()) {
+					sequence_StatemachineActionItemInvisible(context, (StatemachineActionItemInvisible) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_ITEM_VISIBLE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionItemVisibleRule()) {
+					sequence_StatemachineActionItemVisible(context, (StatemachineActionItemVisible) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralBlinkRateRule()) {
+					sequence_StatemachineActionPeripheralBlinkRate(context, (StatemachineActionPeripheralBlinkRate) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CLEAR:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralClearRule()) {
+					sequence_StatemachineActionPeripheralClear(context, (StatemachineActionPeripheralClear) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralCreateWindowRule()) {
+					sequence_StatemachineActionPeripheralCreateWindow(context, (StatemachineActionPeripheralCreateWindow) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralCursorTypeRule()) {
+					sequence_StatemachineActionPeripheralCursorType(context, (StatemachineActionPeripheralCursorType) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralDestroyWindowRule()) {
+					sequence_StatemachineActionPeripheralDestroyWindow(context, (StatemachineActionPeripheralDestroyWindow) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralDeviceBrightnessRule()) {
+					sequence_StatemachineActionPeripheralDeviceBrightness(context, (StatemachineActionPeripheralDeviceBrightness) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralDisplayBitmapRule()) {
+					sequence_StatemachineActionPeripheralDisplayBitmap(context, (StatemachineActionPeripheralDisplayBitmap) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralDisplayTextRule()) {
+					sequence_StatemachineActionPeripheralDisplayText(context, (StatemachineActionPeripheralDisplayText) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralDisplayTextAtRule()) {
+					sequence_StatemachineActionPeripheralDisplayTextAt(context, (StatemachineActionPeripheralDisplayTextAt) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralInterCharacterWaitRule()) {
+					sequence_StatemachineActionPeripheralInterCharacterWait(context, (StatemachineActionPeripheralInterCharacterWait) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralMarqueeFormatRule()) {
+					sequence_StatemachineActionPeripheralMarqueeFormat(context, (StatemachineActionPeripheralMarqueeFormat) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitRule()) {
+					sequence_StatemachineActionPeripheralMarqueeRepeatWait(context, (StatemachineActionPeripheralMarqueeRepeatWait) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralMarqueeTypeRule()) {
+					sequence_StatemachineActionPeripheralMarqueeType(context, (StatemachineActionPeripheralMarqueeType) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitRule()) {
+					sequence_StatemachineActionPeripheralMarqueeUnitWait(context, (StatemachineActionPeripheralMarqueeUnitWait) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralOpenDrawerRule()) {
+					sequence_StatemachineActionPeripheralOpenDrawer(context, (StatemachineActionPeripheralOpenDrawer) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTAcknowledgeRule()) {
+					sequence_StatemachineActionPeripheralPTAcknowledge(context, (StatemachineActionPeripheralPTAcknowledge) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTAuthorizationRule()) {
+					sequence_StatemachineActionPeripheralPTAuthorization(context, (StatemachineActionPeripheralPTAuthorization) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTCloseRule()) {
+					sequence_StatemachineActionPeripheralPTClose(context, (StatemachineActionPeripheralPTClose) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTOpenRule()) {
+					sequence_StatemachineActionPeripheralPTOpen(context, (StatemachineActionPeripheralPTOpen) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTRegistrationRule()) {
+					sequence_StatemachineActionPeripheralPTRegistration(context, (StatemachineActionPeripheralPTRegistration) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE:
+				if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTResponseRule()) {
+					sequence_StatemachineActionPeripheralPTResponse(context, (StatemachineActionPeripheralPTResponse) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPTReversalRule()) {
+					sequence_StatemachineActionPeripheralPTReversal(context, (StatemachineActionPeripheralPTReversal) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintBarcodeRule()) {
+					sequence_StatemachineActionPeripheralPrintBarcode(context, (StatemachineActionPeripheralPrintBarcode) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintBitmapRule()) {
+					sequence_StatemachineActionPeripheralPrintBitmap(context, (StatemachineActionPeripheralPrintBitmap) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintCutRule()) {
+					sequence_StatemachineActionPeripheralPrintCut(context, (StatemachineActionPeripheralPrintCut) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintNormalRule()) {
+					sequence_StatemachineActionPeripheralPrintNormal(context, (StatemachineActionPeripheralPrintNormal) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapRule()) {
+					sequence_StatemachineActionPeripheralPrintRegisterBitmap(context, (StatemachineActionPeripheralPrintRegisterBitmap) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralPrintReportRule()) {
+					sequence_StatemachineActionPeripheralPrintReport(context, (StatemachineActionPeripheralPrintReport) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_PERIPHERAL_SCROLL:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionPeripheralScrollRule()) {
+					sequence_StatemachineActionPeripheralScroll(context, (StatemachineActionPeripheralScroll) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_ACTION_SCHEDULER:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineActionSchedulerRule()) {
+					sequence_StatemachineActionScheduler(context, (StatemachineActionScheduler) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON:
+				if(context == grammarAccess.getStatemachineControlRule() ||
+				   context == grammarAccess.getStatemachineControlButtonRule() ||
+				   context == grammarAccess.getStatemachineControlVisibilityRule()) {
+					sequence_StatemachineControlButton(context, (StatemachineControlButton) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE:
+				if(context == grammarAccess.getStatemachineControlButtonAttributeRule() ||
+				   context == grammarAccess.getStatemachineControlVisibilityRule()) {
+					sequence_StatemachineControlButtonAttribute(context, (StatemachineControlButtonAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT:
+				if(context == grammarAccess.getStatemachineControlButtonAttributeEventRule() ||
+				   context == grammarAccess.getStatemachineControlButtonAttributeEventEventRule()) {
+					sequence_StatemachineControlButtonAttributeEventEvent(context, (StatemachineControlButtonAttributeEventEvent) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY:
+				if(context == grammarAccess.getStatemachineControlButtonAttributeEventRule() ||
+				   context == grammarAccess.getStatemachineControlButtonAttributeEventIdentityRule()) {
+					sequence_StatemachineControlButtonAttributeEventIdentity(context, (StatemachineControlButtonAttributeEventIdentity) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD:
+				if(context == grammarAccess.getStatemachineControlButtonAttributeEventRule() ||
+				   context == grammarAccess.getStatemachineControlButtonAttributeEventKeyboardRule()) {
+					sequence_StatemachineControlButtonAttributeEventKeyboard(context, (StatemachineControlButtonAttributeEventKeyboard) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO:
+				if(context == grammarAccess.getStatemachineControlRule() ||
+				   context == grammarAccess.getStatemachineControlDTORule()) {
+					sequence_StatemachineControlDTO(context, (StatemachineControlDTO) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_DTO_ATTRIBUTE:
+				if(context == grammarAccess.getStatemachineControlDTOAttributeRule()) {
+					sequence_StatemachineControlDTOAttribute(context, (StatemachineControlDTOAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD:
+				if(context == grammarAccess.getStatemachineControlRule() ||
+				   context == grammarAccess.getStatemachineControlFieldRule()) {
+					sequence_StatemachineControlField(context, (StatemachineControlField) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE:
+				if(context == grammarAccess.getStatemachineControlFieldAttributeRule() ||
+				   context == grammarAccess.getStatemachineControlVisibilityRule()) {
+					sequence_StatemachineControlFieldAttribute(context, (StatemachineControlFieldAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_FIELD_LAYOUT:
+				if(context == grammarAccess.getStatemachineControlFieldLayoutRule() ||
+				   context == grammarAccess.getStatemachineControlVisibilityRule()) {
+					sequence_StatemachineControlFieldLayout(context, (StatemachineControlFieldLayout) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_PERIPHERAL:
+				if(context == grammarAccess.getStatemachineControlRule() ||
+				   context == grammarAccess.getStatemachineControlPeripheralRule()) {
+					sequence_StatemachineControlPeripheral(context, (StatemachineControlPeripheral) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER:
+				if(context == grammarAccess.getStatemachineControlRule() ||
+				   context == grammarAccess.getStatemachineControlSchedulerRule()) {
+					sequence_StatemachineControlScheduler(context, (StatemachineControlScheduler) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE:
+				if(context == grammarAccess.getStatemachineControlSchedulerAttributeRule()) {
+					sequence_StatemachineControlSchedulerAttribute(context, (StatemachineControlSchedulerAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_DTO_TYPE:
+				if(context == grammarAccess.getStatemachineDTOTypeRule()) {
+					sequence_StatemachineDTOType(context, (StatemachineDTOType) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_EVENT:
+				if(context == grammarAccess.getStatemachineEventRule()) {
+					sequence_StatemachineEvent(context, (StatemachineEvent) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_FIELD_TYPE:
+				if(context == grammarAccess.getStatemachineFieldTypeRule()) {
+					sequence_StatemachineFieldType(context, (StatemachineFieldType) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_FUNCTION:
+				if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineFunctionRule()) {
+					sequence_StatemachineFunction(context, (StatemachineFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_GUARD:
+				if(context == grammarAccess.getStatemachineGuardRule()) {
+					sequence_StatemachineGuard(context, (StatemachineGuard) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_MODEL:
+				if(context == grammarAccess.getStatemachineModelRule()) {
+					sequence_StatemachineModel(context, (StatemachineModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION:
+				if(context == grammarAccess.getStatemachineActionFieldSourceMoreRule() ||
+				   context == grammarAccess.getStatemachineOperationMoreRule()) {
+					sequence_StatemachineOperationMore(context, (StatemachineOperation) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineOperationRule()) {
+					sequence_StatemachineOperation(context, (StatemachineOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_OPERATION_PARAMETER:
+				if(context == grammarAccess.getStatemachineOperationParameterMoreRule()) {
+					sequence_StatemachineOperationParameterMore(context, (StatemachineOperationParameter) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineOperationParameterRule()) {
+					sequence_StatemachineOperationParameter(context, (StatemachineOperationParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_PACKAGE:
+				if(context == grammarAccess.getStatemachinePackageRule()) {
+					sequence_StatemachinePackage(context, (StatemachinePackage) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_CASH_DRAWER:
+				if(context == grammarAccess.getStatemachinePeripheralDeviceCashDrawerRule()) {
+					sequence_StatemachinePeripheralDeviceCashDrawer(context, (StatemachinePeripheralDeviceCashDrawer) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_LINE_DISPLAY:
+				if(context == grammarAccess.getStatemachinePeripheralDeviceLineDisplayRule()) {
+					sequence_StatemachinePeripheralDeviceLineDisplay(context, (StatemachinePeripheralDeviceLineDisplay) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_POS_PRINTER:
+				if(context == grammarAccess.getStatemachinePeripheralDevicePOSPrinterRule()) {
+					sequence_StatemachinePeripheralDevicePOSPrinter(context, (StatemachinePeripheralDevicePOSPrinter) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_PERIPHERAL_DEVICE_PT:
+				if(context == grammarAccess.getStatemachinePeripheralDevicePTRule()) {
+					sequence_StatemachinePeripheralDevicePT(context, (StatemachinePeripheralDevicePT) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_STATE:
+				if(context == grammarAccess.getStatemachineStateRule()) {
+					sequence_StatemachineState(context, (StatemachineState) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE:
+				if(context == grammarAccess.getStatemachineActionRule() ||
+				   context == grammarAccess.getStatemachineStorageRule()) {
+					sequence_StatemachineStorage(context, (StatemachineStorage) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_STORAGE_RETRIEVE:
+				if(context == grammarAccess.getStatemachineActionFieldSourceMoreRule() ||
+				   context == grammarAccess.getStatemachineStorageRetrieveMoreRule()) {
+					sequence_StatemachineStorageRetrieveMore(context, (StatemachineStorageRetrieve) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getStatemachineActionFieldSourceRule() ||
+				   context == grammarAccess.getStatemachineStorageRetrieveRule()) {
+					sequence_StatemachineStorageRetrieve(context, (StatemachineStorageRetrieve) semanticObject); 
+					return; 
+				}
+				else break;
+			case StatemachineDSLPackage.STATEMACHINE_TRIGGER:
+				if(context == grammarAccess.getStatemachineTriggerRule()) {
+					sequence_StatemachineTrigger(context, (StatemachineTrigger) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getStatemachineImportRule()) {
+					sequence_StatemachineImport(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:
+	 *     (caption=StatemachineActionFieldConcatenation attribute=[StatemachineControlButtonAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionButtonCaption(EObject context, StatemachineActionButtonCaption semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__CAPTION));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionButtonCaptionAccess().getCaptionStatemachineActionFieldConcatenationParserRuleCall_1_0(), semanticObject.getCaption());
+		feeder.accept(grammarAccess.getStatemachineActionButtonCaptionAccess().getAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (image=STRING attribute=[StatemachineControlButtonAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionButtonImage(EObject context, StatemachineActionButtonImage semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__IMAGE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionButtonImageAccess().getImageSTRINGTerminalRuleCall_1_0(), semanticObject.getImage());
+		feeder.accept(grammarAccess.getStatemachineActionButtonImageAccess().getAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (transition=[StatemachineState|ID] guard=StatemachineGuard actions+=StatemachineAction*)
+	 */
+	protected void sequence_StatemachineActionConditionalTransition(EObject context, StatemachineActionConditionalTransition semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (search=StatemachineActionFieldConcatenation dto=[StatemachineControlDTOAttribute|ID] attribute=[LDtoInheritedAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionDTOFind(EObject context, StatemachineActionDTOFind semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__DTO) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__DTO));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__SEARCH) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__SEARCH));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionDTOFindAccess().getSearchStatemachineActionFieldConcatenationParserRuleCall_1_0(), semanticObject.getSearch());
+		feeder.accept(grammarAccess.getStatemachineActionDTOFindAccess().getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getDto());
+		feeder.accept(grammarAccess.getStatemachineActionDTOFindAccess().getAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlFieldAttribute|ID]
+	 */
+	protected void sequence_StatemachineActionFieldClear(EObject context, StatemachineActionFieldClear semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldClearAccess().getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (first=StatemachineActionFieldSource more+=StatemachineActionFieldSourceMore*)
+	 */
+	protected void sequence_StatemachineActionFieldConcatenation(EObject context, StatemachineActionFieldConcatenation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlFieldAttribute|ID]
+	 */
+	protected void sequence_StatemachineActionFieldGetMore(EObject context, StatemachineActionFieldGet semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldGetMoreAccess().getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlFieldAttribute|ID]
+	 */
+	protected void sequence_StatemachineActionFieldGet(EObject context, StatemachineActionFieldGet semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldGetAccess().getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlFieldAttribute|ID]
+	 */
+	protected void sequence_StatemachineActionFieldRemove(EObject context, StatemachineActionFieldRemove semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldRemoveAccess().getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (source=StatemachineActionFieldConcatenation attribute=[StatemachineControlFieldAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionFieldSet(EObject context, StatemachineActionFieldSet semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__SOURCE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__SOURCE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSetAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_1_0(), semanticObject.getSource());
+		feeder.accept(grammarAccess.getStatemachineActionFieldSetAccess().getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (dto=[StatemachineControlDTOAttribute|ID] attribute=[LDtoInheritedAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionFieldSourceDtoAttributeMore(EObject context, StatemachineActionFieldSourceDtoAttribute semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getDto());
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceDtoAttributeMoreAccess().getAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (dto=[StatemachineControlDTOAttribute|ID] attribute=[LDtoInheritedAttribute|ID])
+	 */
+	protected void sequence_StatemachineActionFieldSourceDtoAttribute(EObject context, StatemachineActionFieldSourceDtoAttribute semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getDto());
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceDtoAttributeAccess().getAttributeLDtoInheritedAttributeIDTerminalRuleCall_3_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     evaluationtype=StatemachineEvaluationType
+	 */
+	protected void sequence_StatemachineActionFieldSourceEvaluateMore(EObject context, StatemachineActionFieldSourceEvaluate semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceEvaluateMoreAccess().getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_2_0(), semanticObject.getEvaluationtype());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     evaluationtype=StatemachineEvaluationType
+	 */
+	protected void sequence_StatemachineActionFieldSourceEvaluate(EObject context, StatemachineActionFieldSourceEvaluate semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_EVALUATE__EVALUATIONTYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceEvaluateAccess().getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_0(), semanticObject.getEvaluationtype());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     {StatemachineActionFieldSourceEvent}
+	 */
+	protected void sequence_StatemachineActionFieldSourceEvent(EObject context, StatemachineActionFieldSourceEvent semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     value=SignedNumber
+	 */
+	protected void sequence_StatemachineActionFieldSourceNumberMore(EObject context, StatemachineActionFieldSourceNumber semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceNumberMoreAccess().getValueSignedNumberParserRuleCall_2_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     value=SignedNumber
+	 */
+	protected void sequence_StatemachineActionFieldSourceNumber(EObject context, StatemachineActionFieldSourceNumber semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_NUMBER__VALUE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceNumberAccess().getValueSignedNumberParserRuleCall_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     text=STRING
+	 */
+	protected void sequence_StatemachineActionFieldSourceStringMore(EObject context, StatemachineActionFieldSourceString semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceStringMoreAccess().getTextSTRINGTerminalRuleCall_2_0(), semanticObject.getText());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     text=STRING
+	 */
+	protected void sequence_StatemachineActionFieldSourceString(EObject context, StatemachineActionFieldSourceString semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_STRING__TEXT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceStringAccess().getTextSTRINGTerminalRuleCall_0(), semanticObject.getText());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     text=TRANSLATABLESTRING
+	 */
+	protected void sequence_StatemachineActionFieldSourceTranslateMore(EObject context, StatemachineActionFieldSourceTranslate semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceTranslateMoreAccess().getTextTRANSLATABLESTRINGParserRuleCall_3_0(), semanticObject.getText());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     text=TRANSLATABLESTRING
+	 */
+	protected void sequence_StatemachineActionFieldSourceTranslate(EObject context, StatemachineActionFieldSourceTranslate semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_TRANSLATE__TEXT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionFieldSourceTranslateAccess().getTextTRANSLATABLESTRINGParserRuleCall_1_0(), semanticObject.getText());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlVisibility|ID]
+	 */
+	protected void sequence_StatemachineActionItemInvisible(EObject context, StatemachineActionItemInvisible semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionItemInvisibleAccess().getAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attribute=[StatemachineControlVisibility|ID]
+	 */
+	protected void sequence_StatemachineActionItemVisible(EObject context, StatemachineActionItemVisible semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionItemVisibleAccess().getAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (blinkRate=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralBlinkRate(EObject context, StatemachineActionPeripheralBlinkRate semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__BLINK_RATE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getBlinkRateINTTerminalRuleCall_1_0(), semanticObject.getBlinkRate());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralBlinkRateAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDeviceLineDisplay|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralClear(EObject context, StatemachineActionPeripheralClear semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralClearAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         viewportRow=INT 
+	 *         viewportColumn=INT 
+	 *         viewportHeight=INT 
+	 *         viewportWidth=INT 
+	 *         windowHeight=INT 
+	 *         windowWidth=INT 
+	 *         device=[StatemachinePeripheralDeviceLineDisplay|ID]
+	 *     )
+	 */
+	protected void sequence_StatemachineActionPeripheralCreateWindow(EObject context, StatemachineActionPeripheralCreateWindow semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_ROW));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_COLUMN));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_HEIGHT));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__VIEWPORT_WIDTH));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_HEIGHT));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__WINDOW_WIDTH));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportRowINTTerminalRuleCall_2_0(), semanticObject.getViewportRow());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportColumnINTTerminalRuleCall_4_0(), semanticObject.getViewportColumn());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportHeightINTTerminalRuleCall_6_0(), semanticObject.getViewportHeight());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getViewportWidthINTTerminalRuleCall_8_0(), semanticObject.getViewportWidth());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowHeightINTTerminalRuleCall_10_0(), semanticObject.getWindowHeight());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getWindowWidthINTTerminalRuleCall_12_0(), semanticObject.getWindowWidth());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCreateWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_14_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (cursorType=StatemachineLineDisplayCursorType device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralCursorType(EObject context, StatemachineActionPeripheralCursorType semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__CURSOR_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0(), semanticObject.getCursorType());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralCursorTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDeviceLineDisplay|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralDestroyWindow(EObject context, StatemachineActionPeripheralDestroyWindow semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralDestroyWindowAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (brightness=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralDeviceBrightness(EObject context, StatemachineActionPeripheralDeviceBrightness semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__BRIGHTNESS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getBrightnessINTTerminalRuleCall_1_0(), semanticObject.getBrightness());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralDeviceBrightnessAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (bitmapId=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralDisplayBitmap(EObject context, StatemachineActionPeripheralDisplayBitmap semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__BITMAP_ID));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0(), semanticObject.getBitmapId());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralDisplayBitmapAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         text=StatemachineActionFieldConcatenation 
+	 *         row=INT 
+	 *         column=INT 
+	 *         (hasType?='type' textType=StatemachineLineDisplayTextType)? 
+	 *         device=[StatemachinePeripheralDeviceLineDisplay|ID]
+	 *     )
+	 */
+	protected void sequence_StatemachineActionPeripheralDisplayTextAt(EObject context, StatemachineActionPeripheralDisplayTextAt semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         text=StatemachineActionFieldConcatenation 
+	 *         (hasType?='type' textType=StatemachineLineDisplayTextType)? 
+	 *         device=[StatemachinePeripheralDeviceLineDisplay|ID]
+	 *     )
+	 */
+	protected void sequence_StatemachineActionPeripheralDisplayText(EObject context, StatemachineActionPeripheralDisplayText semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (wait=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralInterCharacterWait(EObject context, StatemachineActionPeripheralInterCharacterWait semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__WAIT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getWaitINTTerminalRuleCall_1_0(), semanticObject.getWait());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralInterCharacterWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (format=StatemachineLineDisplayMarqueeFormat device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralMarqueeFormat(EObject context, StatemachineActionPeripheralMarqueeFormat semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__FORMAT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0(), semanticObject.getFormat());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeFormatAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (wait=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralMarqueeRepeatWait(EObject context, StatemachineActionPeripheralMarqueeRepeatWait semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__WAIT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getWaitINTTerminalRuleCall_1_0(), semanticObject.getWait());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (marqueeType=StatemachineLineDisplayMarqueeType device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralMarqueeType(EObject context, StatemachineActionPeripheralMarqueeType semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__MARQUEE_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0(), semanticObject.getMarqueeType());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeTypeAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (wait=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralMarqueeUnitWait(EObject context, StatemachineActionPeripheralMarqueeUnitWait semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__WAIT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getWaitINTTerminalRuleCall_1_0(), semanticObject.getWait());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralMarqueeUnitWaitAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDeviceCashDrawer|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralOpenDrawer(EObject context, StatemachineActionPeripheralOpenDrawer semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralOpenDrawerAccess().getDeviceStatemachinePeripheralDeviceCashDrawerIDTerminalRuleCall_1_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDevicePT|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralPTAcknowledge(EObject context, StatemachineActionPeripheralPTAcknowledge semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTAcknowledgeAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (amount=StatemachineActionFieldConcatenation device=[StatemachinePeripheralDevicePT|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPTAuthorization(EObject context, StatemachineActionPeripheralPTAuthorization semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__AMOUNT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getAmountStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getAmount());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTAuthorizationAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_4_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDevicePT|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralPTClose(EObject context, StatemachineActionPeripheralPTClose semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTCloseAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (host=StatemachineActionFieldConcatenation port=StatemachineActionFieldConcatenation device=[StatemachinePeripheralDevicePT|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPTOpen(EObject context, StatemachineActionPeripheralPTOpen semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__HOST));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__PORT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getHostStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getHost());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getPortStatemachineActionFieldConcatenationParserRuleCall_4_0(), semanticObject.getPort());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTOpenAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (password=StatemachineActionFieldConcatenation configuration=STRING device=[StatemachinePeripheralDevicePT|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPTRegistration(EObject context, StatemachineActionPeripheralPTRegistration semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__PASSWORD));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__CONFIGURATION));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getPassword());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getConfigurationSTRINGTerminalRuleCall_4_0(), semanticObject.getConfiguration());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTRegistrationAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     device=[StatemachinePeripheralDevicePT|ID]
+	 */
+	protected void sequence_StatemachineActionPeripheralPTResponse(EObject context, StatemachineActionPeripheralPTResponse semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTResponseAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (password=StatemachineActionFieldConcatenation receipt=StatemachineActionFieldConcatenation device=[StatemachinePeripheralDevicePT|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPTReversal(EObject context, StatemachineActionPeripheralPTReversal semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__PASSWORD));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__RECEIPT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getPassword());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0(), semanticObject.getReceipt());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPTReversalAccess().getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (data=STRING barcodeType=StatemachinePOSPrinterBarcodeType device=[StatemachinePeripheralDevicePOSPrinter|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintBarcode(EObject context, StatemachineActionPeripheralPrintBarcode semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DATA));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__BARCODE_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDataSTRINGTerminalRuleCall_2_0(), semanticObject.getData());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0(), semanticObject.getBarcodeType());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintBarcodeAccess().getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (bitmapId=INT device=[StatemachinePeripheralDevicePOSPrinter|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintBitmap(EObject context, StatemachineActionPeripheralPrintBitmap semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__BITMAP_ID));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0(), semanticObject.getBitmapId());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (text=StatemachineActionFieldConcatenation device=[StatemachinePeripheralDevicePOSPrinter|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintCut(EObject context, StatemachineActionPeripheralPrintCut semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__TEXT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getTextStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getText());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintCutAccess().getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (text=StatemachineActionFieldConcatenation device=[StatemachinePeripheralDevicePOSPrinter|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintNormal(EObject context, StatemachineActionPeripheralPrintNormal semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (bitmapId=INT name=STRING device=[StatemachinePeripheralDevicePOSPrinter|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintRegisterBitmap(EObject context, StatemachineActionPeripheralPrintRegisterBitmap semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__BITMAP_ID));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getBitmapIdINTTerminalRuleCall_2_0(), semanticObject.getBitmapId());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getNameSTRINGTerminalRuleCall_4_0(), semanticObject.getName());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralPrintRegisterBitmapAccess().getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (report=[Report|ID] (hasFilter?='from' key=[StatemachineStorage|ID])?)
+	 */
+	protected void sequence_StatemachineActionPeripheralPrintReport(EObject context, StatemachineActionPeripheralPrintReport semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (direction=StatemachineLineDisplayScrollTextType units=INT device=[StatemachinePeripheralDeviceLineDisplay|ID])
+	 */
+	protected void sequence_StatemachineActionPeripheralScroll(EObject context, StatemachineActionPeripheralScroll semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DIRECTION));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__UNITS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0(), semanticObject.getDirection());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralScrollAccess().getUnitsINTTerminalRuleCall_2_0(), semanticObject.getUnits());
+		feeder.accept(grammarAccess.getStatemachineActionPeripheralScrollAccess().getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1(), semanticObject.getDevice());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     scheduler=[StatemachineControlSchedulerAttribute|ID]
+	 */
+	protected void sequence_StatemachineActionScheduler(EObject context, StatemachineActionScheduler semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineActionSchedulerAccess().getSchedulerStatemachineControlSchedulerAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getScheduler());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     event=[StatemachineEvent|ID]
+	 */
+	protected void sequence_StatemachineControlButtonAttributeEventEvent(EObject context, StatemachineControlButtonAttributeEventEvent semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_EVENT__EVENT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlButtonAttributeEventEventAccess().getEventStatemachineEventIDTerminalRuleCall_2_0_1(), semanticObject.getEvent());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     identity=INT
+	 */
+	protected void sequence_StatemachineControlButtonAttributeEventIdentity(EObject context, StatemachineControlButtonAttributeEventIdentity semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_IDENTITY__IDENTITY));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlButtonAttributeEventIdentityAccess().getIdentityINTTerminalRuleCall_2_0(), semanticObject.getIdentity());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     keystroke=STRING
+	 */
+	protected void sequence_StatemachineControlButtonAttributeEventKeyboard(EObject context, StatemachineControlButtonAttributeEventKeyboard semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_BUTTON_ATTRIBUTE_EVENT_KEYBOARD__KEYSTROKE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlButtonAttributeEventKeyboardAccess().getKeystrokeSTRINGTerminalRuleCall_2_0(), semanticObject.getKeystroke());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID (hasImage?='image' image=STRING)? event=StatemachineControlButtonAttributeEvent)
+	 */
+	protected void sequence_StatemachineControlButtonAttribute(EObject context, StatemachineControlButtonAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID eventType=StatemachineControlButtonEventType buttons+=StatemachineControlButtonAttribute*)
+	 */
+	protected void sequence_StatemachineControlButton(EObject context, StatemachineControlButton semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID attributeType=StatemachineDTOType (hasEvent?='event' event=[StatemachineEvent|ID])?)
+	 */
+	protected void sequence_StatemachineControlDTOAttribute(EObject context, StatemachineControlDTOAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID dtos+=StatemachineControlDTOAttribute*)
+	 */
+	protected void sequence_StatemachineControlDTO(EObject context, StatemachineControlDTO semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID attributeType=StatemachineFieldType)
+	 */
+	protected void sequence_StatemachineControlFieldAttribute(EObject context, StatemachineControlFieldAttribute semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_FIELD_ATTRIBUTE__ATTRIBUTE_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlFieldAttributeAccess().getNameTRANSLATABLEIDParserRuleCall_1_0(), semanticObject.getName());
+		feeder.accept(grammarAccess.getStatemachineControlFieldAttributeAccess().getAttributeTypeStatemachineFieldTypeParserRuleCall_3_0(), semanticObject.getAttributeType());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachineControlFieldLayout(EObject context, StatemachineControlFieldLayout semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlFieldLayoutAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID fields+=StatemachineControlFieldAttribute* layouts+=StatemachineControlFieldLayout*)
+	 */
+	protected void sequence_StatemachineControlField(EObject context, StatemachineControlField semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=ID 
+	 *         lineDisplays+=StatemachinePeripheralDeviceLineDisplay* 
+	 *         posPrinters+=StatemachinePeripheralDevicePOSPrinter* 
+	 *         cashDrawers+=StatemachinePeripheralDeviceCashDrawer* 
+	 *         paymentTerminals+=StatemachinePeripheralDevicePT*
+	 *     )
+	 */
+	protected void sequence_StatemachineControlPeripheral(EObject context, StatemachineControlPeripheral semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID delay=INT event=[StatemachineEvent|ID])
+	 */
+	protected void sequence_StatemachineControlSchedulerAttribute(EObject context, StatemachineControlSchedulerAttribute semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__DELAY));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_CONTROL_SCHEDULER_ATTRIBUTE__EVENT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.accept(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getDelayINTTerminalRuleCall_3_0(), semanticObject.getDelay());
+		feeder.accept(grammarAccess.getStatemachineControlSchedulerAttributeAccess().getEventStatemachineEventIDTerminalRuleCall_5_0_1(), semanticObject.getEvent());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID schedulers+=StatemachineControlSchedulerAttribute*)
+	 */
+	protected void sequence_StatemachineControlScheduler(EObject context, StatemachineControlScheduler semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attributeType=[LDto|ID]
+	 */
+	protected void sequence_StatemachineDTOType(EObject context, StatemachineDTOType semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_DTO_TYPE__ATTRIBUTE_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineDTOTypeAccess().getAttributeTypeLDtoIDTerminalRuleCall_0_1(), semanticObject.getAttributeType());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachineEvent(EObject context, StatemachineEvent semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineEventAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     attributeType=StatemachineInternalType
+	 */
+	protected void sequence_StatemachineFieldType(EObject context, StatemachineFieldType semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_FIELD_TYPE__ATTRIBUTE_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineFieldTypeAccess().getAttributeTypeStatemachineInternalTypeEnumRuleCall_0(), semanticObject.getAttributeType());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (function=[FunctionLibraryFunction|ID] first=StatemachineOperationParameter? more+=StatemachineOperationParameterMore*)
+	 */
+	protected void sequence_StatemachineFunction(EObject context, StatemachineFunction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         guard=[FunctionLibraryGuard|ID] 
+	 *         (hasOnFail?='onFail' onFailCaption=TRANSLATABLESTRING onFailDescription=TRANSLATABLESTRING onFailType=StatemachineUserMessageType)?
+	 *     )
+	 */
+	protected void sequence_StatemachineGuard(EObject context, StatemachineGuard semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     importedNamespace=StatemachineQualifiedNameWithWildCard
+	 */
+	protected void sequence_StatemachineImport(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.getStatemachineImportAccess().getImportedNamespaceStatemachineQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=StatemachinePackage*
+	 */
+	protected void sequence_StatemachineModel(EObject context, StatemachineModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     operation=[FunctionLibraryOperation|ID]
+	 */
+	protected void sequence_StatemachineOperationMore(EObject context, StatemachineOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     source=StatemachineActionFieldConcatenation
+	 */
+	protected void sequence_StatemachineOperationParameterMore(EObject context, StatemachineOperationParameter semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION_PARAMETER__SOURCE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION_PARAMETER__SOURCE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineOperationParameterMoreAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_2_0(), semanticObject.getSource());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     source=StatemachineActionFieldConcatenation
+	 */
+	protected void sequence_StatemachineOperationParameter(EObject context, StatemachineOperationParameter semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION_PARAMETER__SOURCE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION_PARAMETER__SOURCE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineOperationParameterAccess().getSourceStatemachineActionFieldConcatenationParserRuleCall_0(), semanticObject.getSource());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (operation=[FunctionLibraryOperation|ID] first=StatemachineOperationParameter? more+=StatemachineOperationParameterMore*)
+	 */
+	protected void sequence_StatemachineOperation(EObject context, StatemachineOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=StatemachineImport* statemachines+=Statemachine*)?)
+	 */
+	protected void sequence_StatemachinePackage(EObject context, StatemachinePackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachinePeripheralDeviceCashDrawer(EObject context, StatemachinePeripheralDeviceCashDrawer semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachinePeripheralDeviceCashDrawerAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachinePeripheralDeviceLineDisplay(EObject context, StatemachinePeripheralDeviceLineDisplay semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachinePeripheralDeviceLineDisplayAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachinePeripheralDevicePOSPrinter(EObject context, StatemachinePeripheralDevicePOSPrinter semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachinePeripheralDevicePOSPrinterAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ID
+	 */
+	protected void sequence_StatemachinePeripheralDevicePT(EObject context, StatemachinePeripheralDevicePT semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_BASE__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachinePeripheralDevicePTAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=ID 
+	 *         triggers+=StatemachineTrigger* 
+	 *         identity=StatemachineOperation? 
+	 *         (keystroke=[StatemachineControlFieldAttribute|ID] (hasKeyOperation?='and' keyOperation=StatemachineOperation)?)?
+	 *     )
+	 */
+	protected void sequence_StatemachineState(EObject context, StatemachineState semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (key=ID attribute=ID)
+	 */
+	protected void sequence_StatemachineStorageRetrieveMore(EObject context, StatemachineStorageRetrieve semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__KEY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__KEY));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getKeyIDTerminalRuleCall_4_0(), semanticObject.getKey());
+		feeder.accept(grammarAccess.getStatemachineStorageRetrieveMoreAccess().getAttributeIDTerminalRuleCall_6_0(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (key=ID attribute=ID)
+	 */
+	protected void sequence_StatemachineStorageRetrieve(EObject context, StatemachineStorageRetrieve semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__KEY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__KEY));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineStorageRetrieveAccess().getKeyIDTerminalRuleCall_2_0(), semanticObject.getKey());
+		feeder.accept(grammarAccess.getStatemachineStorageRetrieveAccess().getAttributeIDTerminalRuleCall_4_0(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (content=StatemachineActionFieldConcatenation key=ID attribute=ID)
+	 */
+	protected void sequence_StatemachineStorage(EObject context, StatemachineStorage semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__KEY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__KEY));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__ATTRIBUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__ATTRIBUTE));
+			if(transientValues.isValueTransient(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__CONTENT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE__CONTENT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getStatemachineStorageAccess().getContentStatemachineActionFieldConcatenationParserRuleCall_1_0(), semanticObject.getContent());
+		feeder.accept(grammarAccess.getStatemachineStorageAccess().getKeyIDTerminalRuleCall_3_0(), semanticObject.getKey());
+		feeder.accept(grammarAccess.getStatemachineStorageAccess().getAttributeIDTerminalRuleCall_5_0(), semanticObject.getAttribute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         triggers+=[StatemachineEvent|ID]* 
+	 *         guards+=StatemachineGuard* 
+	 *         (hasTransition?='transition' transition=[StatemachineState|ID])? 
+	 *         actions+=StatemachineAction*
+	 *     )
+	 */
+	protected void sequence_StatemachineTrigger(EObject context, StatemachineTrigger semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=ID 
+	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
+	 *         functionGroup=[FunctionLibraryStatemachineGroup|ID]? 
+	 *         initialState=[StatemachineState|ID] 
+	 *         initialEvent=[StatemachineEvent|ID] 
+	 *         events+=StatemachineEvent* 
+	 *         controls+=StatemachineControl* 
+	 *         states+=StatemachineState*
+	 *     )
+	 */
+	protected void sequence_Statemachine(EObject context, Statemachine semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSyntacticSequencer.java
new file mode 100644
index 0000000..0ae6b4d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/serializer/StatemachineDSLSyntacticSequencer.java
@@ -0,0 +1,213 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.statemachine.services.StatemachineDSLGrammarAccess;
+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 StatemachineDSLSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected StatemachineDSLGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_StatemachinePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_StatemachineState___RightCurlyBracketKeyword_3_0_3_TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1__a;
+	protected AbstractElementAlias match_StatemachineState___TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1_RightCurlyBracketKeyword_3_0_3__a;
+	protected AbstractElementAlias match_StatemachineTrigger___GuardsKeyword_3_0_LeftCurlyBracketKeyword_3_1_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 = (StatemachineDSLGrammarAccess) access;
+		match_StatemachinePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachinePackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachinePackageAccess().getRightCurlyBracketKeyword_3_3()));
+		match_StatemachineState___RightCurlyBracketKeyword_3_0_3_TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3()), new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1()));
+		match_StatemachineState___TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1_RightCurlyBracketKeyword_3_0_3__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getTriggersKeyword_3_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getLeftCurlyBracketKeyword_3_0_1()), new TokenAlias(false, false, grammarAccess.getStatemachineStateAccess().getRightCurlyBracketKeyword_3_0_3()));
+		match_StatemachineTrigger___GuardsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineTriggerAccess().getGuardsKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineTriggerAccess().getLeftCurlyBracketKeyword_3_1()), new TokenAlias(false, false, grammarAccess.getStatemachineTriggerAccess().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_StatemachinePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_StatemachinePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_StatemachineState___RightCurlyBracketKeyword_3_0_3_TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1__a.equals(syntax))
+				emit_StatemachineState___RightCurlyBracketKeyword_3_0_3_TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_StatemachineState___TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1_RightCurlyBracketKeyword_3_0_3__a.equals(syntax))
+				emit_StatemachineState___TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1_RightCurlyBracketKeyword_3_0_3__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_StatemachineTrigger___GuardsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_StatemachineTrigger___GuardsKeyword_3_0_LeftCurlyBracketKeyword_3_1_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_StatemachinePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('}' 'triggers' '{')*
+	 */
+	protected void emit_StatemachineState___RightCurlyBracketKeyword_3_0_3_TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('triggers' '{' '}')*
+	 */
+	protected void emit_StatemachineState___TriggersKeyword_3_0_0_LeftCurlyBracketKeyword_3_0_1_RightCurlyBracketKeyword_3_0_3__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('guards' '{' '}')?
+	 */
+	protected void emit_StatemachineTrigger___GuardsKeyword_3_0_LeftCurlyBracketKeyword_3_1_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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/services/StatemachineDSLGrammarAccess.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/services/StatemachineDSLGrammarAccess.java
new file mode 100644
index 0000000..1f738bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/services/StatemachineDSLGrammarAccess.java
@@ -0,0 +1,7574 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class StatemachineModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesStatemachinePackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//StatemachineModel:
+		//	packages+=StatemachinePackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=StatemachinePackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//StatemachinePackage
+		public RuleCall getPackagesStatemachinePackageParserRuleCall_0() { return cPackagesStatemachinePackageParserRuleCall_0; }
+	}
+
+	public class StatemachinePackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachinePackageAction_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 cImportsStatemachineImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cStatemachinesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cStatemachinesStatemachineParserRuleCall_3_2_0 = (RuleCall)cStatemachinesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//StatemachinePackage:
+		//	{StatemachinePackage} "package" name=QualifiedName ("{" imports+=StatemachineImport* statemachines+=Statemachine*
+		//	"}")?;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachinePackage} "package" name=QualifiedName ("{" imports+=StatemachineImport* statemachines+=Statemachine* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachinePackage}
+		public Action getStatemachinePackageAction_0() { return cStatemachinePackageAction_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+=StatemachineImport* statemachines+=Statemachine* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+
+		//imports+=StatemachineImport*
+		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
+
+		//StatemachineImport
+		public RuleCall getImportsStatemachineImportParserRuleCall_3_1_0() { return cImportsStatemachineImportParserRuleCall_3_1_0; }
+
+		//statemachines+=Statemachine*
+		public Assignment getStatemachinesAssignment_3_2() { return cStatemachinesAssignment_3_2; }
+
+		//Statemachine
+		public RuleCall getStatemachinesStatemachineParserRuleCall_3_2_0() { return cStatemachinesStatemachineParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+
+	public class StatemachineElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Statemachine");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cStatemachineKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cDescriptionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cDescriptionDescribedByKeyword_2_0_0 = (Keyword)cDescriptionAssignment_2_0.eContents().get(0);
+		private final Assignment cDescriptionValueAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0 = (RuleCall)cDescriptionValueAssignment_2_1.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cFunctiongroupKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cFunctionGroupAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0 = (CrossReference)cFunctionGroupAssignment_3_1.eContents().get(0);
+		private final RuleCall cFunctionGroupFunctionLibraryStatemachineGroupIDTerminalRuleCall_3_1_0_1 = (RuleCall)cFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cInitialStateKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cInitialStateAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cInitialStateStatemachineStateCrossReference_5_0 = (CrossReference)cInitialStateAssignment_5.eContents().get(0);
+		private final RuleCall cInitialStateStatemachineStateIDTerminalRuleCall_5_0_1 = (RuleCall)cInitialStateStatemachineStateCrossReference_5_0.eContents().get(1);
+		private final Keyword cInitialEventKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cInitialEventAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final CrossReference cInitialEventStatemachineEventCrossReference_7_0 = (CrossReference)cInitialEventAssignment_7.eContents().get(0);
+		private final RuleCall cInitialEventStatemachineEventIDTerminalRuleCall_7_0_1 = (RuleCall)cInitialEventStatemachineEventCrossReference_7_0.eContents().get(1);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cEventsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Group cGroup_8_1 = (Group)cGroup_8.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_8_1_0 = (Keyword)cGroup_8_1.eContents().get(0);
+		private final Assignment cEventsAssignment_8_1_1 = (Assignment)cGroup_8_1.eContents().get(1);
+		private final RuleCall cEventsStatemachineEventParserRuleCall_8_1_1_0 = (RuleCall)cEventsAssignment_8_1_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_1_2 = (Keyword)cGroup_8_1.eContents().get(2);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cControlsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cControlsAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cControlsStatemachineControlParserRuleCall_9_2_0 = (RuleCall)cControlsAssignment_9_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9_3 = (Keyword)cGroup_9.eContents().get(3);
+		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
+		private final Keyword cStatesKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
+		private final Assignment cStatesAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
+		private final RuleCall cStatesStatemachineStateParserRuleCall_10_2_0 = (RuleCall)cStatesAssignment_10_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_10_3 = (Keyword)cGroup_10.eContents().get(3);
+		
+		//Statemachine:
+		//	"statemachine" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("functiongroup"
+		//	functionGroup=[function::FunctionLibraryStatemachineGroup])? "initialState" initialState=[StatemachineState]
+		//	"initialEvent" initialEvent=[StatemachineEvent] ("events" ("{" events+=StatemachineEvent* "}")) ("controls" "{"
+		//	controls+=StatemachineControl* "}") ("states" "{" states+=StatemachineState* "}");
+		public ParserRule getRule() { return rule; }
+
+		//"statemachine" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("functiongroup"
+		//functionGroup=[function::FunctionLibraryStatemachineGroup])? "initialState" initialState=[StatemachineState]
+		//"initialEvent" initialEvent=[StatemachineEvent] ("events" ("{" events+=StatemachineEvent* "}")) ("controls" "{"
+		//controls+=StatemachineControl* "}") ("states" "{" states+=StatemachineState* "}")
+		public Group getGroup() { return cGroup; }
+
+		//"statemachine"
+		public Keyword getStatemachineKeyword_0() { return cStatemachineKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//description?="described by"
+		public Assignment getDescriptionAssignment_2_0() { return cDescriptionAssignment_2_0; }
+
+		//"described by"
+		public Keyword getDescriptionDescribedByKeyword_2_0_0() { return cDescriptionDescribedByKeyword_2_0_0; }
+
+		//descriptionValue=TRANSLATABLESTRING
+		public Assignment getDescriptionValueAssignment_2_1() { return cDescriptionValueAssignment_2_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0; }
+
+		//("functiongroup" functionGroup=[function::FunctionLibraryStatemachineGroup])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"functiongroup"
+		public Keyword getFunctiongroupKeyword_3_0() { return cFunctiongroupKeyword_3_0; }
+
+		//functionGroup=[function::FunctionLibraryStatemachineGroup]
+		public Assignment getFunctionGroupAssignment_3_1() { return cFunctionGroupAssignment_3_1; }
+
+		//[function::FunctionLibraryStatemachineGroup]
+		public CrossReference getFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0() { return cFunctionGroupFunctionLibraryStatemachineGroupCrossReference_3_1_0; }
+
+		//ID
+		public RuleCall getFunctionGroupFunctionLibraryStatemachineGroupIDTerminalRuleCall_3_1_0_1() { return cFunctionGroupFunctionLibraryStatemachineGroupIDTerminalRuleCall_3_1_0_1; }
+
+		//"initialState"
+		public Keyword getInitialStateKeyword_4() { return cInitialStateKeyword_4; }
+
+		//initialState=[StatemachineState]
+		public Assignment getInitialStateAssignment_5() { return cInitialStateAssignment_5; }
+
+		//[StatemachineState]
+		public CrossReference getInitialStateStatemachineStateCrossReference_5_0() { return cInitialStateStatemachineStateCrossReference_5_0; }
+
+		//ID
+		public RuleCall getInitialStateStatemachineStateIDTerminalRuleCall_5_0_1() { return cInitialStateStatemachineStateIDTerminalRuleCall_5_0_1; }
+
+		//"initialEvent"
+		public Keyword getInitialEventKeyword_6() { return cInitialEventKeyword_6; }
+
+		//initialEvent=[StatemachineEvent]
+		public Assignment getInitialEventAssignment_7() { return cInitialEventAssignment_7; }
+
+		//[StatemachineEvent]
+		public CrossReference getInitialEventStatemachineEventCrossReference_7_0() { return cInitialEventStatemachineEventCrossReference_7_0; }
+
+		//ID
+		public RuleCall getInitialEventStatemachineEventIDTerminalRuleCall_7_0_1() { return cInitialEventStatemachineEventIDTerminalRuleCall_7_0_1; }
+
+		//"events" ("{" events+=StatemachineEvent* "}")
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"events"
+		public Keyword getEventsKeyword_8_0() { return cEventsKeyword_8_0; }
+
+		//"{" events+=StatemachineEvent* "}"
+		public Group getGroup_8_1() { return cGroup_8_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_1_0() { return cLeftCurlyBracketKeyword_8_1_0; }
+
+		//events+=StatemachineEvent*
+		public Assignment getEventsAssignment_8_1_1() { return cEventsAssignment_8_1_1; }
+
+		//StatemachineEvent
+		public RuleCall getEventsStatemachineEventParserRuleCall_8_1_1_0() { return cEventsStatemachineEventParserRuleCall_8_1_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_1_2() { return cRightCurlyBracketKeyword_8_1_2; }
+
+		//"controls" "{" controls+=StatemachineControl* "}"
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"controls"
+		public Keyword getControlsKeyword_9_0() { return cControlsKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//controls+=StatemachineControl*
+		public Assignment getControlsAssignment_9_2() { return cControlsAssignment_9_2; }
+
+		//StatemachineControl
+		public RuleCall getControlsStatemachineControlParserRuleCall_9_2_0() { return cControlsStatemachineControlParserRuleCall_9_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_3() { return cRightCurlyBracketKeyword_9_3; }
+
+		//"states" "{" states+=StatemachineState* "}"
+		public Group getGroup_10() { return cGroup_10; }
+
+		//"states"
+		public Keyword getStatesKeyword_10_0() { return cStatesKeyword_10_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }
+
+		//states+=StatemachineState*
+		public Assignment getStatesAssignment_10_2() { return cStatesAssignment_10_2; }
+
+		//StatemachineState
+		public RuleCall getStatesStatemachineStateParserRuleCall_10_2_0() { return cStatesStatemachineStateParserRuleCall_10_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_10_3() { return cRightCurlyBracketKeyword_10_3; }
+	}
+
+	public class StatemachineEventElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineEvent");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cEventKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachineEvent:
+		//	"event" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"event" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"event"
+		public Keyword getEventKeyword_0() { return cEventKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachineStateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineState");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cStateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
+		private final Group cGroup_3_0 = (Group)cUnorderedGroup_3.eContents().get(0);
+		private final Keyword cTriggersKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_0_1 = (Keyword)cGroup_3_0.eContents().get(1);
+		private final Assignment cTriggersAssignment_3_0_2 = (Assignment)cGroup_3_0.eContents().get(2);
+		private final RuleCall cTriggersStatemachineTriggerParserRuleCall_3_0_2_0 = (RuleCall)cTriggersAssignment_3_0_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_0_3 = (Keyword)cGroup_3_0.eContents().get(3);
+		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
+		private final Keyword cIdentityKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cIdentityAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cIdentityStatemachineOperationParserRuleCall_3_1_1_0 = (RuleCall)cIdentityAssignment_3_1_1.eContents().get(0);
+		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
+		private final Keyword cKeystrokeKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3_2_1 = (Keyword)cGroup_3_2.eContents().get(1);
+		private final Assignment cKeystrokeAssignment_3_2_2 = (Assignment)cGroup_3_2.eContents().get(2);
+		private final CrossReference cKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0 = (CrossReference)cKeystrokeAssignment_3_2_2.eContents().get(0);
+		private final RuleCall cKeystrokeStatemachineControlFieldAttributeIDTerminalRuleCall_3_2_2_0_1 = (RuleCall)cKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0.eContents().get(1);
+		private final Group cGroup_3_2_3 = (Group)cGroup_3_2.eContents().get(3);
+		private final Assignment cHasKeyOperationAssignment_3_2_3_0 = (Assignment)cGroup_3_2_3.eContents().get(0);
+		private final Keyword cHasKeyOperationAndKeyword_3_2_3_0_0 = (Keyword)cHasKeyOperationAssignment_3_2_3_0.eContents().get(0);
+		private final Assignment cKeyOperationAssignment_3_2_3_1 = (Assignment)cGroup_3_2_3.eContents().get(1);
+		private final RuleCall cKeyOperationStatemachineOperationParserRuleCall_3_2_3_1_0 = (RuleCall)cKeyOperationAssignment_3_2_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//StatemachineState:
+		//	"state" name=ID "{" (("triggers" "{" triggers+=StatemachineTrigger* "}")? & ("identity"
+		//	identity=StatemachineOperation)? & ("keystroke" "@" keystroke=[StatemachineControlFieldAttribute]
+		//	(hasKeyOperation?="and" keyOperation=StatemachineOperation)?)?) "}";
+		public ParserRule getRule() { return rule; }
+
+		//"state" name=ID "{" (("triggers" "{" triggers+=StatemachineTrigger* "}")? & ("identity" identity=StatemachineOperation)?
+		//& ("keystroke" "@" keystroke=[StatemachineControlFieldAttribute] (hasKeyOperation?="and"
+		//keyOperation=StatemachineOperation)?)?) "}"
+		public Group getGroup() { return cGroup; }
+
+		//"state"
+		public Keyword getStateKeyword_0() { return cStateKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("triggers" "{" triggers+=StatemachineTrigger* "}")? & ("identity" identity=StatemachineOperation)? & ("keystroke" "@"
+		//keystroke=[StatemachineControlFieldAttribute] (hasKeyOperation?="and" keyOperation=StatemachineOperation)?)?
+		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
+
+		//("triggers" "{" triggers+=StatemachineTrigger* "}")?
+		public Group getGroup_3_0() { return cGroup_3_0; }
+
+		//"triggers"
+		public Keyword getTriggersKeyword_3_0_0() { return cTriggersKeyword_3_0_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0_1() { return cLeftCurlyBracketKeyword_3_0_1; }
+
+		//triggers+=StatemachineTrigger*
+		public Assignment getTriggersAssignment_3_0_2() { return cTriggersAssignment_3_0_2; }
+
+		//StatemachineTrigger
+		public RuleCall getTriggersStatemachineTriggerParserRuleCall_3_0_2_0() { return cTriggersStatemachineTriggerParserRuleCall_3_0_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_0_3() { return cRightCurlyBracketKeyword_3_0_3; }
+
+		//("identity" identity=StatemachineOperation)?
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//"identity"
+		public Keyword getIdentityKeyword_3_1_0() { return cIdentityKeyword_3_1_0; }
+
+		//identity=StatemachineOperation
+		public Assignment getIdentityAssignment_3_1_1() { return cIdentityAssignment_3_1_1; }
+
+		//StatemachineOperation
+		public RuleCall getIdentityStatemachineOperationParserRuleCall_3_1_1_0() { return cIdentityStatemachineOperationParserRuleCall_3_1_1_0; }
+
+		//("keystroke" "@" keystroke=[StatemachineControlFieldAttribute] (hasKeyOperation?="and"
+		//keyOperation=StatemachineOperation)?)?
+		public Group getGroup_3_2() { return cGroup_3_2; }
+
+		//"keystroke"
+		public Keyword getKeystrokeKeyword_3_2_0() { return cKeystrokeKeyword_3_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3_2_1() { return cCommercialAtKeyword_3_2_1; }
+
+		//keystroke=[StatemachineControlFieldAttribute]
+		public Assignment getKeystrokeAssignment_3_2_2() { return cKeystrokeAssignment_3_2_2; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0() { return cKeystrokeStatemachineControlFieldAttributeCrossReference_3_2_2_0; }
+
+		//ID
+		public RuleCall getKeystrokeStatemachineControlFieldAttributeIDTerminalRuleCall_3_2_2_0_1() { return cKeystrokeStatemachineControlFieldAttributeIDTerminalRuleCall_3_2_2_0_1; }
+
+		//(hasKeyOperation?="and" keyOperation=StatemachineOperation)?
+		public Group getGroup_3_2_3() { return cGroup_3_2_3; }
+
+		//hasKeyOperation?="and"
+		public Assignment getHasKeyOperationAssignment_3_2_3_0() { return cHasKeyOperationAssignment_3_2_3_0; }
+
+		//"and"
+		public Keyword getHasKeyOperationAndKeyword_3_2_3_0_0() { return cHasKeyOperationAndKeyword_3_2_3_0_0; }
+
+		//keyOperation=StatemachineOperation
+		public Assignment getKeyOperationAssignment_3_2_3_1() { return cKeyOperationAssignment_3_2_3_1; }
+
+		//StatemachineOperation
+		public RuleCall getKeyOperationStatemachineOperationParserRuleCall_3_2_3_1_0() { return cKeyOperationStatemachineOperationParserRuleCall_3_2_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class StatemachineTriggerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineTrigger");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineTriggerAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cTriggerKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTriggersAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cTriggersStatemachineEventCrossReference_2_0 = (CrossReference)cTriggersAssignment_2.eContents().get(0);
+		private final RuleCall cTriggersStatemachineEventIDTerminalRuleCall_2_0_1 = (RuleCall)cTriggersStatemachineEventCrossReference_2_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cGuardsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cGuardsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cGuardsStatemachineGuardParserRuleCall_3_2_0 = (RuleCall)cGuardsAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		private final Keyword cActionsKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Assignment cHasTransitionAssignment_5_0 = (Assignment)cGroup_5.eContents().get(0);
+		private final Keyword cHasTransitionTransitionKeyword_5_0_0 = (Keyword)cHasTransitionAssignment_5_0.eContents().get(0);
+		private final Assignment cTransitionAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final CrossReference cTransitionStatemachineStateCrossReference_5_1_0 = (CrossReference)cTransitionAssignment_5_1.eContents().get(0);
+		private final RuleCall cTransitionStatemachineStateIDTerminalRuleCall_5_1_0_1 = (RuleCall)cTransitionStatemachineStateCrossReference_5_1_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cActionsAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cActionsStatemachineActionParserRuleCall_7_0 = (RuleCall)cActionsAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//StatemachineTrigger:
+		//	{StatemachineTrigger} "trigger" triggers+=[StatemachineEvent]* ("guards" "{" guards+=StatemachineGuard* "}")?
+		//	"actions" (hasTransition?="transition" transition=[StatemachineState])? "{" actions+=StatemachineAction* "}";
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineTrigger} "trigger" triggers+=[StatemachineEvent]* ("guards" "{" guards+=StatemachineGuard* "}")? "actions"
+		//(hasTransition?="transition" transition=[StatemachineState])? "{" actions+=StatemachineAction* "}"
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineTrigger}
+		public Action getStatemachineTriggerAction_0() { return cStatemachineTriggerAction_0; }
+
+		//"trigger"
+		public Keyword getTriggerKeyword_1() { return cTriggerKeyword_1; }
+
+		//triggers+=[StatemachineEvent]*
+		public Assignment getTriggersAssignment_2() { return cTriggersAssignment_2; }
+
+		//[StatemachineEvent]
+		public CrossReference getTriggersStatemachineEventCrossReference_2_0() { return cTriggersStatemachineEventCrossReference_2_0; }
+
+		//ID
+		public RuleCall getTriggersStatemachineEventIDTerminalRuleCall_2_0_1() { return cTriggersStatemachineEventIDTerminalRuleCall_2_0_1; }
+
+		//("guards" "{" guards+=StatemachineGuard* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"guards"
+		public Keyword getGuardsKeyword_3_0() { return cGuardsKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//guards+=StatemachineGuard*
+		public Assignment getGuardsAssignment_3_2() { return cGuardsAssignment_3_2; }
+
+		//StatemachineGuard
+		public RuleCall getGuardsStatemachineGuardParserRuleCall_3_2_0() { return cGuardsStatemachineGuardParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+
+		//"actions"
+		public Keyword getActionsKeyword_4() { return cActionsKeyword_4; }
+
+		//(hasTransition?="transition" transition=[StatemachineState])?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//hasTransition?="transition"
+		public Assignment getHasTransitionAssignment_5_0() { return cHasTransitionAssignment_5_0; }
+
+		//"transition"
+		public Keyword getHasTransitionTransitionKeyword_5_0_0() { return cHasTransitionTransitionKeyword_5_0_0; }
+
+		//transition=[StatemachineState]
+		public Assignment getTransitionAssignment_5_1() { return cTransitionAssignment_5_1; }
+
+		//[StatemachineState]
+		public CrossReference getTransitionStatemachineStateCrossReference_5_1_0() { return cTransitionStatemachineStateCrossReference_5_1_0; }
+
+		//ID
+		public RuleCall getTransitionStatemachineStateIDTerminalRuleCall_5_1_0_1() { return cTransitionStatemachineStateIDTerminalRuleCall_5_1_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+		//actions+=StatemachineAction*
+		public Assignment getActionsAssignment_7() { return cActionsAssignment_7; }
+
+		//StatemachineAction
+		public RuleCall getActionsStatemachineActionParserRuleCall_7_0() { return cActionsStatemachineActionParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class StatemachineActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineAction");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineActionPeripheralBlinkRateParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineActionPeripheralClearParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineActionPeripheralCreateWindowParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cStatemachineActionPeripheralCursorTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cStatemachineActionPeripheralDestroyWindowParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cStatemachineActionPeripheralDisplayBitmapParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cStatemachineActionPeripheralDisplayTextParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cStatemachineActionPeripheralDisplayTextAtParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cStatemachineActionPeripheralMarqueeFormatParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cStatemachineActionPeripheralMarqueeTypeParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cStatemachineActionPeripheralScrollParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		private final RuleCall cStatemachineActionPeripheralOpenDrawerParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
+		private final RuleCall cStatemachineActionPeripheralPrintBarcodeParserRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
+		private final RuleCall cStatemachineActionPeripheralPrintBitmapParserRuleCall_17 = (RuleCall)cAlternatives.eContents().get(17);
+		private final RuleCall cStatemachineActionPeripheralPrintCutParserRuleCall_18 = (RuleCall)cAlternatives.eContents().get(18);
+		private final RuleCall cStatemachineActionPeripheralPrintNormalParserRuleCall_19 = (RuleCall)cAlternatives.eContents().get(19);
+		private final RuleCall cStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20 = (RuleCall)cAlternatives.eContents().get(20);
+		private final RuleCall cStatemachineActionPeripheralPTOpenParserRuleCall_21 = (RuleCall)cAlternatives.eContents().get(21);
+		private final RuleCall cStatemachineActionPeripheralPTCloseParserRuleCall_22 = (RuleCall)cAlternatives.eContents().get(22);
+		private final RuleCall cStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23 = (RuleCall)cAlternatives.eContents().get(23);
+		private final RuleCall cStatemachineActionPeripheralPTReversalParserRuleCall_24 = (RuleCall)cAlternatives.eContents().get(24);
+		private final RuleCall cStatemachineActionPeripheralPTRegistrationParserRuleCall_25 = (RuleCall)cAlternatives.eContents().get(25);
+		private final RuleCall cStatemachineActionPeripheralPTAuthorizationParserRuleCall_26 = (RuleCall)cAlternatives.eContents().get(26);
+		private final RuleCall cStatemachineActionPeripheralPrintReportParserRuleCall_27 = (RuleCall)cAlternatives.eContents().get(27);
+		private final RuleCall cStatemachineActionFieldSetParserRuleCall_28 = (RuleCall)cAlternatives.eContents().get(28);
+		private final RuleCall cStatemachineActionFieldRemoveParserRuleCall_29 = (RuleCall)cAlternatives.eContents().get(29);
+		private final RuleCall cStatemachineActionItemVisibleParserRuleCall_30 = (RuleCall)cAlternatives.eContents().get(30);
+		private final RuleCall cStatemachineActionItemInvisibleParserRuleCall_31 = (RuleCall)cAlternatives.eContents().get(31);
+		private final RuleCall cStatemachineActionFieldClearParserRuleCall_32 = (RuleCall)cAlternatives.eContents().get(32);
+		private final RuleCall cStatemachineActionButtonCaptionParserRuleCall_33 = (RuleCall)cAlternatives.eContents().get(33);
+		private final RuleCall cStatemachineActionButtonImageParserRuleCall_34 = (RuleCall)cAlternatives.eContents().get(34);
+		private final RuleCall cStatemachineActionDTOFindParserRuleCall_35 = (RuleCall)cAlternatives.eContents().get(35);
+		private final RuleCall cStatemachineStorageParserRuleCall_36 = (RuleCall)cAlternatives.eContents().get(36);
+		private final RuleCall cStatemachineActionSchedulerParserRuleCall_37 = (RuleCall)cAlternatives.eContents().get(37);
+		private final RuleCall cStatemachineOperationParserRuleCall_38 = (RuleCall)cAlternatives.eContents().get(38);
+		private final RuleCall cStatemachineActionConditionalTransitionParserRuleCall_39 = (RuleCall)cAlternatives.eContents().get(39);
+		
+		//StatemachineAction:
+		//	StatemachineActionPeripheralBlinkRate | StatemachineActionPeripheralClear | StatemachineActionPeripheralCreateWindow
+		//	| StatemachineActionPeripheralCursorType | StatemachineActionPeripheralDestroyWindow |
+		//	StatemachineActionPeripheralDeviceBrightness | StatemachineActionPeripheralDisplayBitmap |
+		//	StatemachineActionPeripheralDisplayText | StatemachineActionPeripheralDisplayTextAt |
+		//	StatemachineActionPeripheralInterCharacterWait | StatemachineActionPeripheralMarqueeFormat |
+		//	StatemachineActionPeripheralMarqueeRepeatWait | StatemachineActionPeripheralMarqueeType |
+		//	StatemachineActionPeripheralMarqueeUnitWait | StatemachineActionPeripheralScroll |
+		//	StatemachineActionPeripheralOpenDrawer | StatemachineActionPeripheralPrintBarcode |
+		//	StatemachineActionPeripheralPrintBitmap | StatemachineActionPeripheralPrintCut |
+		//	StatemachineActionPeripheralPrintNormal | StatemachineActionPeripheralPrintRegisterBitmap |
+		//	StatemachineActionPeripheralPTOpen | StatemachineActionPeripheralPTClose | StatemachineActionPeripheralPTAcknowledge
+		//	| //	StatemachineActionPeripheralPTPrepaidTopUp|
+		//	StatemachineActionPeripheralPTReversal | StatemachineActionPeripheralPTRegistration |
+		//	StatemachineActionPeripheralPTAuthorization | StatemachineActionPeripheralPrintReport | StatemachineActionFieldSet |
+		//	StatemachineActionFieldRemove | StatemachineActionItemVisible | StatemachineActionItemInvisible |
+		//	StatemachineActionFieldClear | StatemachineActionButtonCaption | StatemachineActionButtonImage |
+		//	StatemachineActionDTOFind | StatemachineStorage | StatemachineActionScheduler | StatemachineOperation |
+		//	StatemachineActionConditionalTransition;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineActionPeripheralBlinkRate | StatemachineActionPeripheralClear | StatemachineActionPeripheralCreateWindow |
+		//StatemachineActionPeripheralCursorType | StatemachineActionPeripheralDestroyWindow |
+		//StatemachineActionPeripheralDeviceBrightness | StatemachineActionPeripheralDisplayBitmap |
+		//StatemachineActionPeripheralDisplayText | StatemachineActionPeripheralDisplayTextAt |
+		//StatemachineActionPeripheralInterCharacterWait | StatemachineActionPeripheralMarqueeFormat |
+		//StatemachineActionPeripheralMarqueeRepeatWait | StatemachineActionPeripheralMarqueeType |
+		//StatemachineActionPeripheralMarqueeUnitWait | StatemachineActionPeripheralScroll |
+		//StatemachineActionPeripheralOpenDrawer | StatemachineActionPeripheralPrintBarcode |
+		//StatemachineActionPeripheralPrintBitmap | StatemachineActionPeripheralPrintCut |
+		//StatemachineActionPeripheralPrintNormal | StatemachineActionPeripheralPrintRegisterBitmap |
+		//StatemachineActionPeripheralPTOpen | StatemachineActionPeripheralPTClose | StatemachineActionPeripheralPTAcknowledge | //	StatemachineActionPeripheralPTPrepaidTopUp|
+		//StatemachineActionPeripheralPTReversal | StatemachineActionPeripheralPTRegistration |
+		//StatemachineActionPeripheralPTAuthorization | StatemachineActionPeripheralPrintReport | StatemachineActionFieldSet |
+		//StatemachineActionFieldRemove | StatemachineActionItemVisible | StatemachineActionItemInvisible |
+		//StatemachineActionFieldClear | StatemachineActionButtonCaption | StatemachineActionButtonImage |
+		//StatemachineActionDTOFind | StatemachineStorage | StatemachineActionScheduler | StatemachineOperation |
+		//StatemachineActionConditionalTransition
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineActionPeripheralBlinkRate
+		public RuleCall getStatemachineActionPeripheralBlinkRateParserRuleCall_0() { return cStatemachineActionPeripheralBlinkRateParserRuleCall_0; }
+
+		//StatemachineActionPeripheralClear
+		public RuleCall getStatemachineActionPeripheralClearParserRuleCall_1() { return cStatemachineActionPeripheralClearParserRuleCall_1; }
+
+		//StatemachineActionPeripheralCreateWindow
+		public RuleCall getStatemachineActionPeripheralCreateWindowParserRuleCall_2() { return cStatemachineActionPeripheralCreateWindowParserRuleCall_2; }
+
+		//StatemachineActionPeripheralCursorType
+		public RuleCall getStatemachineActionPeripheralCursorTypeParserRuleCall_3() { return cStatemachineActionPeripheralCursorTypeParserRuleCall_3; }
+
+		//StatemachineActionPeripheralDestroyWindow
+		public RuleCall getStatemachineActionPeripheralDestroyWindowParserRuleCall_4() { return cStatemachineActionPeripheralDestroyWindowParserRuleCall_4; }
+
+		//StatemachineActionPeripheralDeviceBrightness
+		public RuleCall getStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5() { return cStatemachineActionPeripheralDeviceBrightnessParserRuleCall_5; }
+
+		//StatemachineActionPeripheralDisplayBitmap
+		public RuleCall getStatemachineActionPeripheralDisplayBitmapParserRuleCall_6() { return cStatemachineActionPeripheralDisplayBitmapParserRuleCall_6; }
+
+		//StatemachineActionPeripheralDisplayText
+		public RuleCall getStatemachineActionPeripheralDisplayTextParserRuleCall_7() { return cStatemachineActionPeripheralDisplayTextParserRuleCall_7; }
+
+		//StatemachineActionPeripheralDisplayTextAt
+		public RuleCall getStatemachineActionPeripheralDisplayTextAtParserRuleCall_8() { return cStatemachineActionPeripheralDisplayTextAtParserRuleCall_8; }
+
+		//StatemachineActionPeripheralInterCharacterWait
+		public RuleCall getStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9() { return cStatemachineActionPeripheralInterCharacterWaitParserRuleCall_9; }
+
+		//StatemachineActionPeripheralMarqueeFormat
+		public RuleCall getStatemachineActionPeripheralMarqueeFormatParserRuleCall_10() { return cStatemachineActionPeripheralMarqueeFormatParserRuleCall_10; }
+
+		//StatemachineActionPeripheralMarqueeRepeatWait
+		public RuleCall getStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11() { return cStatemachineActionPeripheralMarqueeRepeatWaitParserRuleCall_11; }
+
+		//StatemachineActionPeripheralMarqueeType
+		public RuleCall getStatemachineActionPeripheralMarqueeTypeParserRuleCall_12() { return cStatemachineActionPeripheralMarqueeTypeParserRuleCall_12; }
+
+		//StatemachineActionPeripheralMarqueeUnitWait
+		public RuleCall getStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13() { return cStatemachineActionPeripheralMarqueeUnitWaitParserRuleCall_13; }
+
+		//StatemachineActionPeripheralScroll
+		public RuleCall getStatemachineActionPeripheralScrollParserRuleCall_14() { return cStatemachineActionPeripheralScrollParserRuleCall_14; }
+
+		//StatemachineActionPeripheralOpenDrawer
+		public RuleCall getStatemachineActionPeripheralOpenDrawerParserRuleCall_15() { return cStatemachineActionPeripheralOpenDrawerParserRuleCall_15; }
+
+		//StatemachineActionPeripheralPrintBarcode
+		public RuleCall getStatemachineActionPeripheralPrintBarcodeParserRuleCall_16() { return cStatemachineActionPeripheralPrintBarcodeParserRuleCall_16; }
+
+		//StatemachineActionPeripheralPrintBitmap
+		public RuleCall getStatemachineActionPeripheralPrintBitmapParserRuleCall_17() { return cStatemachineActionPeripheralPrintBitmapParserRuleCall_17; }
+
+		//StatemachineActionPeripheralPrintCut
+		public RuleCall getStatemachineActionPeripheralPrintCutParserRuleCall_18() { return cStatemachineActionPeripheralPrintCutParserRuleCall_18; }
+
+		//StatemachineActionPeripheralPrintNormal
+		public RuleCall getStatemachineActionPeripheralPrintNormalParserRuleCall_19() { return cStatemachineActionPeripheralPrintNormalParserRuleCall_19; }
+
+		//StatemachineActionPeripheralPrintRegisterBitmap
+		public RuleCall getStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20() { return cStatemachineActionPeripheralPrintRegisterBitmapParserRuleCall_20; }
+
+		//StatemachineActionPeripheralPTOpen
+		public RuleCall getStatemachineActionPeripheralPTOpenParserRuleCall_21() { return cStatemachineActionPeripheralPTOpenParserRuleCall_21; }
+
+		//StatemachineActionPeripheralPTClose
+		public RuleCall getStatemachineActionPeripheralPTCloseParserRuleCall_22() { return cStatemachineActionPeripheralPTCloseParserRuleCall_22; }
+
+		//StatemachineActionPeripheralPTAcknowledge
+		public RuleCall getStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23() { return cStatemachineActionPeripheralPTAcknowledgeParserRuleCall_23; }
+
+		////	StatemachineActionPeripheralPTPrepaidTopUp|
+		//StatemachineActionPeripheralPTReversal
+		public RuleCall getStatemachineActionPeripheralPTReversalParserRuleCall_24() { return cStatemachineActionPeripheralPTReversalParserRuleCall_24; }
+
+		//StatemachineActionPeripheralPTRegistration
+		public RuleCall getStatemachineActionPeripheralPTRegistrationParserRuleCall_25() { return cStatemachineActionPeripheralPTRegistrationParserRuleCall_25; }
+
+		//StatemachineActionPeripheralPTAuthorization
+		public RuleCall getStatemachineActionPeripheralPTAuthorizationParserRuleCall_26() { return cStatemachineActionPeripheralPTAuthorizationParserRuleCall_26; }
+
+		//StatemachineActionPeripheralPrintReport
+		public RuleCall getStatemachineActionPeripheralPrintReportParserRuleCall_27() { return cStatemachineActionPeripheralPrintReportParserRuleCall_27; }
+
+		//StatemachineActionFieldSet
+		public RuleCall getStatemachineActionFieldSetParserRuleCall_28() { return cStatemachineActionFieldSetParserRuleCall_28; }
+
+		//StatemachineActionFieldRemove
+		public RuleCall getStatemachineActionFieldRemoveParserRuleCall_29() { return cStatemachineActionFieldRemoveParserRuleCall_29; }
+
+		//StatemachineActionItemVisible
+		public RuleCall getStatemachineActionItemVisibleParserRuleCall_30() { return cStatemachineActionItemVisibleParserRuleCall_30; }
+
+		//StatemachineActionItemInvisible
+		public RuleCall getStatemachineActionItemInvisibleParserRuleCall_31() { return cStatemachineActionItemInvisibleParserRuleCall_31; }
+
+		//StatemachineActionFieldClear
+		public RuleCall getStatemachineActionFieldClearParserRuleCall_32() { return cStatemachineActionFieldClearParserRuleCall_32; }
+
+		//StatemachineActionButtonCaption
+		public RuleCall getStatemachineActionButtonCaptionParserRuleCall_33() { return cStatemachineActionButtonCaptionParserRuleCall_33; }
+
+		//StatemachineActionButtonImage
+		public RuleCall getStatemachineActionButtonImageParserRuleCall_34() { return cStatemachineActionButtonImageParserRuleCall_34; }
+
+		//StatemachineActionDTOFind
+		public RuleCall getStatemachineActionDTOFindParserRuleCall_35() { return cStatemachineActionDTOFindParserRuleCall_35; }
+
+		//StatemachineStorage
+		public RuleCall getStatemachineStorageParserRuleCall_36() { return cStatemachineStorageParserRuleCall_36; }
+
+		//StatemachineActionScheduler
+		public RuleCall getStatemachineActionSchedulerParserRuleCall_37() { return cStatemachineActionSchedulerParserRuleCall_37; }
+
+		//StatemachineOperation
+		public RuleCall getStatemachineOperationParserRuleCall_38() { return cStatemachineOperationParserRuleCall_38; }
+
+		//StatemachineActionConditionalTransition
+		public RuleCall getStatemachineActionConditionalTransitionParserRuleCall_39() { return cStatemachineActionConditionalTransitionParserRuleCall_39; }
+	}
+
+	public class StatemachineActionPeripheralBlinkRateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralBlinkRate");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBlinkRateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cBlinkRateAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cBlinkRateINTTerminalRuleCall_1_0 = (RuleCall)cBlinkRateAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//// peripherals
+		////lineDisplay
+		//StatemachineActionPeripheralBlinkRate:
+		//	"blinkRate" blinkRate=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"blinkRate" blinkRate=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"blinkRate"
+		public Keyword getBlinkRateKeyword_0() { return cBlinkRateKeyword_0; }
+
+		//blinkRate=INT
+		public Assignment getBlinkRateAssignment_1() { return cBlinkRateAssignment_1; }
+
+		//INT
+		public RuleCall getBlinkRateINTTerminalRuleCall_1_0() { return cBlinkRateINTTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralClearElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralClear");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cClearDeviceKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDeviceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0 = (CrossReference)cDeviceAssignment_1.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralClear:
+		//	"clearDevice" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"clearDevice" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"clearDevice"
+		public Keyword getClearDeviceKeyword_0() { return cClearDeviceKeyword_0; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_1() { return cDeviceAssignment_1; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionPeripheralCreateWindowElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralCreateWindow");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCreateWindowKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cRowKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cViewportRowAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cViewportRowINTTerminalRuleCall_2_0 = (RuleCall)cViewportRowAssignment_2.eContents().get(0);
+		private final Keyword cColumnKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cViewportColumnAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cViewportColumnINTTerminalRuleCall_4_0 = (RuleCall)cViewportColumnAssignment_4.eContents().get(0);
+		private final Keyword cHeightKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cViewportHeightAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cViewportHeightINTTerminalRuleCall_6_0 = (RuleCall)cViewportHeightAssignment_6.eContents().get(0);
+		private final Keyword cWidthKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cViewportWidthAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final RuleCall cViewportWidthINTTerminalRuleCall_8_0 = (RuleCall)cViewportWidthAssignment_8.eContents().get(0);
+		private final Keyword cWindowHeightKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cWindowHeightAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final RuleCall cWindowHeightINTTerminalRuleCall_10_0 = (RuleCall)cWindowHeightAssignment_10.eContents().get(0);
+		private final Keyword cWindowWidthKeyword_11 = (Keyword)cGroup.eContents().get(11);
+		private final Assignment cWindowWidthAssignment_12 = (Assignment)cGroup.eContents().get(12);
+		private final RuleCall cWindowWidthINTTerminalRuleCall_12_0 = (RuleCall)cWindowWidthAssignment_12.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_13 = (Keyword)cGroup.eContents().get(13);
+		private final Assignment cDeviceAssignment_14 = (Assignment)cGroup.eContents().get(14);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0 = (CrossReference)cDeviceAssignment_14.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_14_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralCreateWindow:
+		//	"createWindow" "row" viewportRow=INT "column" viewportColumn=INT "height" viewportHeight=INT "width"
+		//	viewportWidth=INT "windowHeight" windowHeight=INT "windowWidth" windowWidth=INT "@"
+		//	device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"createWindow" "row" viewportRow=INT "column" viewportColumn=INT "height" viewportHeight=INT "width" viewportWidth=INT
+		//"windowHeight" windowHeight=INT "windowWidth" windowWidth=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"createWindow"
+		public Keyword getCreateWindowKeyword_0() { return cCreateWindowKeyword_0; }
+
+		//"row"
+		public Keyword getRowKeyword_1() { return cRowKeyword_1; }
+
+		//viewportRow=INT
+		public Assignment getViewportRowAssignment_2() { return cViewportRowAssignment_2; }
+
+		//INT
+		public RuleCall getViewportRowINTTerminalRuleCall_2_0() { return cViewportRowINTTerminalRuleCall_2_0; }
+
+		//"column"
+		public Keyword getColumnKeyword_3() { return cColumnKeyword_3; }
+
+		//viewportColumn=INT
+		public Assignment getViewportColumnAssignment_4() { return cViewportColumnAssignment_4; }
+
+		//INT
+		public RuleCall getViewportColumnINTTerminalRuleCall_4_0() { return cViewportColumnINTTerminalRuleCall_4_0; }
+
+		//"height"
+		public Keyword getHeightKeyword_5() { return cHeightKeyword_5; }
+
+		//viewportHeight=INT
+		public Assignment getViewportHeightAssignment_6() { return cViewportHeightAssignment_6; }
+
+		//INT
+		public RuleCall getViewportHeightINTTerminalRuleCall_6_0() { return cViewportHeightINTTerminalRuleCall_6_0; }
+
+		//"width"
+		public Keyword getWidthKeyword_7() { return cWidthKeyword_7; }
+
+		//viewportWidth=INT
+		public Assignment getViewportWidthAssignment_8() { return cViewportWidthAssignment_8; }
+
+		//INT
+		public RuleCall getViewportWidthINTTerminalRuleCall_8_0() { return cViewportWidthINTTerminalRuleCall_8_0; }
+
+		//"windowHeight"
+		public Keyword getWindowHeightKeyword_9() { return cWindowHeightKeyword_9; }
+
+		//windowHeight=INT
+		public Assignment getWindowHeightAssignment_10() { return cWindowHeightAssignment_10; }
+
+		//INT
+		public RuleCall getWindowHeightINTTerminalRuleCall_10_0() { return cWindowHeightINTTerminalRuleCall_10_0; }
+
+		//"windowWidth"
+		public Keyword getWindowWidthKeyword_11() { return cWindowWidthKeyword_11; }
+
+		//windowWidth=INT
+		public Assignment getWindowWidthAssignment_12() { return cWindowWidthAssignment_12; }
+
+		//INT
+		public RuleCall getWindowWidthINTTerminalRuleCall_12_0() { return cWindowWidthINTTerminalRuleCall_12_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_13() { return cCommercialAtKeyword_13; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_14() { return cDeviceAssignment_14; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_14_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_14_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_14_0_1; }
+	}
+
+	public class StatemachineActionPeripheralCursorTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralCursorType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCursorTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cCursorTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0 = (RuleCall)cCursorTypeAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralCursorType:
+		//	"cursorType" cursorType=StatemachineLineDisplayCursorType "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"cursorType" cursorType=StatemachineLineDisplayCursorType "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"cursorType"
+		public Keyword getCursorTypeKeyword_0() { return cCursorTypeKeyword_0; }
+
+		//cursorType=StatemachineLineDisplayCursorType
+		public Assignment getCursorTypeAssignment_1() { return cCursorTypeAssignment_1; }
+
+		//StatemachineLineDisplayCursorType
+		public RuleCall getCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0() { return cCursorTypeStatemachineLineDisplayCursorTypeEnumRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralDestroyWindowElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralDestroyWindow");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDestroyWindowKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDeviceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0 = (CrossReference)cDeviceAssignment_1.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralDestroyWindow:
+		//	"destroyWindow" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"destroyWindow" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"destroyWindow"
+		public Keyword getDestroyWindowKeyword_0() { return cDestroyWindowKeyword_0; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_1() { return cDeviceAssignment_1; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionPeripheralDeviceBrightnessElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralDeviceBrightness");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDeviceBrightnessKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cBrightnessAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cBrightnessINTTerminalRuleCall_1_0 = (RuleCall)cBrightnessAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralDeviceBrightness:
+		//	"deviceBrightness" brightness=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"deviceBrightness" brightness=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"deviceBrightness"
+		public Keyword getDeviceBrightnessKeyword_0() { return cDeviceBrightnessKeyword_0; }
+
+		//brightness=INT
+		public Assignment getBrightnessAssignment_1() { return cBrightnessAssignment_1; }
+
+		//INT
+		public RuleCall getBrightnessINTTerminalRuleCall_1_0() { return cBrightnessINTTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralDisplayBitmapElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralDisplayBitmap");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDisplayBitmapKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cIdKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cBitmapIdAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cBitmapIdINTTerminalRuleCall_2_0 = (RuleCall)cBitmapIdAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralDisplayBitmap:
+		//	"displayBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"displayBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"displayBitmap"
+		public Keyword getDisplayBitmapKeyword_0() { return cDisplayBitmapKeyword_0; }
+
+		//"id"
+		public Keyword getIdKeyword_1() { return cIdKeyword_1; }
+
+		//bitmapId=INT
+		public Assignment getBitmapIdAssignment_2() { return cBitmapIdAssignment_2; }
+
+		//INT
+		public RuleCall getBitmapIdINTTerminalRuleCall_2_0() { return cBitmapIdINTTerminalRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralDisplayTextElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralDisplayText");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDisplayTextKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cTextKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cTextStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cTextAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cHasTypeAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final Keyword cHasTypeTypeKeyword_3_0_0 = (Keyword)cHasTypeAssignment_3_0.eContents().get(0);
+		private final Assignment cTextTypeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_3_1_0 = (RuleCall)cTextTypeAssignment_3_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cDeviceAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0 = (CrossReference)cDeviceAssignment_5.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_5_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralDisplayText:
+		//	"displayText" "text" text=StatemachineActionFieldConcatenation (hasType?="type"
+		//	textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"displayText" "text" text=StatemachineActionFieldConcatenation (hasType?="type"
+		//textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"displayText"
+		public Keyword getDisplayTextKeyword_0() { return cDisplayTextKeyword_0; }
+
+		//"text"
+		public Keyword getTextKeyword_1() { return cTextKeyword_1; }
+
+		//text=StatemachineActionFieldConcatenation
+		public Assignment getTextAssignment_2() { return cTextAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getTextStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cTextStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//(hasType?="type" textType=StatemachineLineDisplayTextType)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//hasType?="type"
+		public Assignment getHasTypeAssignment_3_0() { return cHasTypeAssignment_3_0; }
+
+		//"type"
+		public Keyword getHasTypeTypeKeyword_3_0_0() { return cHasTypeTypeKeyword_3_0_0; }
+
+		//textType=StatemachineLineDisplayTextType
+		public Assignment getTextTypeAssignment_3_1() { return cTextTypeAssignment_3_1; }
+
+		//StatemachineLineDisplayTextType
+		public RuleCall getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_3_1_0() { return cTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_3_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_4() { return cCommercialAtKeyword_4; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_5() { return cDeviceAssignment_5; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_5_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_5_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_5_0_1; }
+	}
+
+	public class StatemachineActionPeripheralDisplayTextAtElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralDisplayTextAt");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDisplayTextAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cTextKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cTextStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cTextAssignment_2.eContents().get(0);
+		private final Keyword cRowKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cRowAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cRowINTTerminalRuleCall_4_0 = (RuleCall)cRowAssignment_4.eContents().get(0);
+		private final Keyword cColumnKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cColumnAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cColumnINTTerminalRuleCall_6_0 = (RuleCall)cColumnAssignment_6.eContents().get(0);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Assignment cHasTypeAssignment_7_0 = (Assignment)cGroup_7.eContents().get(0);
+		private final Keyword cHasTypeTypeKeyword_7_0_0 = (Keyword)cHasTypeAssignment_7_0.eContents().get(0);
+		private final Assignment cTextTypeAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
+		private final RuleCall cTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_7_1_0 = (RuleCall)cTextTypeAssignment_7_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		private final Assignment cDeviceAssignment_9 = (Assignment)cGroup.eContents().get(9);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0 = (CrossReference)cDeviceAssignment_9.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_9_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralDisplayTextAt:
+		//	"displayTextAt" "text" text=StatemachineActionFieldConcatenation "row" row=INT "column" column=INT (hasType?="type"
+		//	textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"displayTextAt" "text" text=StatemachineActionFieldConcatenation "row" row=INT "column" column=INT (hasType?="type"
+		//textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"displayTextAt"
+		public Keyword getDisplayTextAtKeyword_0() { return cDisplayTextAtKeyword_0; }
+
+		//"text"
+		public Keyword getTextKeyword_1() { return cTextKeyword_1; }
+
+		//text=StatemachineActionFieldConcatenation
+		public Assignment getTextAssignment_2() { return cTextAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getTextStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cTextStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"row"
+		public Keyword getRowKeyword_3() { return cRowKeyword_3; }
+
+		//row=INT
+		public Assignment getRowAssignment_4() { return cRowAssignment_4; }
+
+		//INT
+		public RuleCall getRowINTTerminalRuleCall_4_0() { return cRowINTTerminalRuleCall_4_0; }
+
+		//"column"
+		public Keyword getColumnKeyword_5() { return cColumnKeyword_5; }
+
+		//column=INT
+		public Assignment getColumnAssignment_6() { return cColumnAssignment_6; }
+
+		//INT
+		public RuleCall getColumnINTTerminalRuleCall_6_0() { return cColumnINTTerminalRuleCall_6_0; }
+
+		//(hasType?="type" textType=StatemachineLineDisplayTextType)?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//hasType?="type"
+		public Assignment getHasTypeAssignment_7_0() { return cHasTypeAssignment_7_0; }
+
+		//"type"
+		public Keyword getHasTypeTypeKeyword_7_0_0() { return cHasTypeTypeKeyword_7_0_0; }
+
+		//textType=StatemachineLineDisplayTextType
+		public Assignment getTextTypeAssignment_7_1() { return cTextTypeAssignment_7_1; }
+
+		//StatemachineLineDisplayTextType
+		public RuleCall getTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_7_1_0() { return cTextTypeStatemachineLineDisplayTextTypeEnumRuleCall_7_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_8() { return cCommercialAtKeyword_8; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_9() { return cDeviceAssignment_9; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_9_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_9_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_9_0_1; }
+	}
+
+	public class StatemachineActionPeripheralInterCharacterWaitElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralInterCharacterWait");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cInterCharacterWaitKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cWaitAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cWaitINTTerminalRuleCall_1_0 = (RuleCall)cWaitAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralInterCharacterWait:
+		//	"interCharacterWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"interCharacterWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"interCharacterWait"
+		public Keyword getInterCharacterWaitKeyword_0() { return cInterCharacterWaitKeyword_0; }
+
+		//wait=INT
+		public Assignment getWaitAssignment_1() { return cWaitAssignment_1; }
+
+		//INT
+		public RuleCall getWaitINTTerminalRuleCall_1_0() { return cWaitINTTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralMarqueeFormatElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralMarqueeFormat");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMarqueeFormatKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cFormatAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0 = (RuleCall)cFormatAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralMarqueeFormat:
+		//	"marqueeFormat" format=StatemachineLineDisplayMarqueeFormat "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"marqueeFormat" format=StatemachineLineDisplayMarqueeFormat "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"marqueeFormat"
+		public Keyword getMarqueeFormatKeyword_0() { return cMarqueeFormatKeyword_0; }
+
+		//format=StatemachineLineDisplayMarqueeFormat
+		public Assignment getFormatAssignment_1() { return cFormatAssignment_1; }
+
+		//StatemachineLineDisplayMarqueeFormat
+		public RuleCall getFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0() { return cFormatStatemachineLineDisplayMarqueeFormatEnumRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralMarqueeRepeatWaitElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralMarqueeRepeatWait");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMarqueeRepeatWaitKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cWaitAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cWaitINTTerminalRuleCall_1_0 = (RuleCall)cWaitAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralMarqueeRepeatWait:
+		//	"marqueeRepeatWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"marqueeRepeatWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"marqueeRepeatWait"
+		public Keyword getMarqueeRepeatWaitKeyword_0() { return cMarqueeRepeatWaitKeyword_0; }
+
+		//wait=INT
+		public Assignment getWaitAssignment_1() { return cWaitAssignment_1; }
+
+		//INT
+		public RuleCall getWaitINTTerminalRuleCall_1_0() { return cWaitINTTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralMarqueeTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralMarqueeType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMarqueeTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cMarqueeTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0 = (RuleCall)cMarqueeTypeAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralMarqueeType:
+		//	"marqueeType" marqueeType=StatemachineLineDisplayMarqueeType "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"marqueeType" marqueeType=StatemachineLineDisplayMarqueeType "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"marqueeType"
+		public Keyword getMarqueeTypeKeyword_0() { return cMarqueeTypeKeyword_0; }
+
+		//marqueeType=StatemachineLineDisplayMarqueeType
+		public Assignment getMarqueeTypeAssignment_1() { return cMarqueeTypeAssignment_1; }
+
+		//StatemachineLineDisplayMarqueeType
+		public RuleCall getMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0() { return cMarqueeTypeStatemachineLineDisplayMarqueeTypeEnumRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralMarqueeUnitWaitElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralMarqueeUnitWait");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMarqueeUnitWaitKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cWaitAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cWaitINTTerminalRuleCall_1_0 = (RuleCall)cWaitAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDeviceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0 = (CrossReference)cDeviceAssignment_3.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralMarqueeUnitWait:
+		//	"marqueeUnitWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"marqueeUnitWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"marqueeUnitWait"
+		public Keyword getMarqueeUnitWaitKeyword_0() { return cMarqueeUnitWaitKeyword_0; }
+
+		//wait=INT
+		public Assignment getWaitAssignment_1() { return cWaitAssignment_1; }
+
+		//INT
+		public RuleCall getWaitINTTerminalRuleCall_1_0() { return cWaitINTTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_3() { return cDeviceAssignment_3; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionPeripheralScrollElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralScroll");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cScrollKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDirectionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0 = (RuleCall)cDirectionAssignment_1.eContents().get(0);
+		private final Assignment cUnitsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cUnitsINTTerminalRuleCall_2_0 = (RuleCall)cUnitsAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralScroll:
+		//	"scroll" direction=StatemachineLineDisplayScrollTextType units=INT "@"
+		//	device=[StatemachinePeripheralDeviceLineDisplay];
+		public ParserRule getRule() { return rule; }
+
+		//"scroll" direction=StatemachineLineDisplayScrollTextType units=INT "@" device=[StatemachinePeripheralDeviceLineDisplay]
+		public Group getGroup() { return cGroup; }
+
+		//"scroll"
+		public Keyword getScrollKeyword_0() { return cScrollKeyword_0; }
+
+		//direction=StatemachineLineDisplayScrollTextType
+		public Assignment getDirectionAssignment_1() { return cDirectionAssignment_1; }
+
+		//StatemachineLineDisplayScrollTextType
+		public RuleCall getDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0() { return cDirectionStatemachineLineDisplayScrollTextTypeEnumRuleCall_1_0; }
+
+		//units=INT
+		public Assignment getUnitsAssignment_2() { return cUnitsAssignment_2; }
+
+		//INT
+		public RuleCall getUnitsINTTerminalRuleCall_2_0() { return cUnitsINTTerminalRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDeviceLineDisplay]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDeviceLineDisplay]
+		public CrossReference getDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0() { return cDeviceStatemachinePeripheralDeviceLineDisplayCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDeviceLineDisplayIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralOpenDrawerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralOpenDrawer");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cOpenDrawerKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDeviceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0 = (CrossReference)cDeviceAssignment_1.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDeviceCashDrawerIDTerminalRuleCall_1_0_1 = (RuleCall)cDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralOpenDrawer:
+		//	"openDrawer" device=[StatemachinePeripheralDeviceCashDrawer];
+		public ParserRule getRule() { return rule; }
+
+		//"openDrawer" device=[StatemachinePeripheralDeviceCashDrawer]
+		public Group getGroup() { return cGroup; }
+
+		//"openDrawer"
+		public Keyword getOpenDrawerKeyword_0() { return cOpenDrawerKeyword_0; }
+
+		//device=[StatemachinePeripheralDeviceCashDrawer]
+		public Assignment getDeviceAssignment_1() { return cDeviceAssignment_1; }
+
+		//[StatemachinePeripheralDeviceCashDrawer]
+		public CrossReference getDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0() { return cDeviceStatemachinePeripheralDeviceCashDrawerCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDeviceCashDrawerIDTerminalRuleCall_1_0_1() { return cDeviceStatemachinePeripheralDeviceCashDrawerIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintBarcodeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintBarcode");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrintBarcodeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cDataKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cDataAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cDataSTRINGTerminalRuleCall_2_0 = (RuleCall)cDataAssignment_2.eContents().get(0);
+		private final Keyword cBarcodeTypeKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cBarcodeTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0 = (RuleCall)cBarcodeTypeAssignment_4.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDeviceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0 = (CrossReference)cDeviceAssignment_6.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintBarcode:
+		//	"printBarcode" "data" data=STRING "barcodeType" barcodeType=StatemachinePOSPrinterBarcodeType "@"
+		//	device=[StatemachinePeripheralDevicePOSPrinter];
+		public ParserRule getRule() { return rule; }
+
+		//"printBarcode" "data" data=STRING "barcodeType" barcodeType=StatemachinePOSPrinterBarcodeType "@"
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Group getGroup() { return cGroup; }
+
+		//"printBarcode"
+		public Keyword getPrintBarcodeKeyword_0() { return cPrintBarcodeKeyword_0; }
+
+		//"data"
+		public Keyword getDataKeyword_1() { return cDataKeyword_1; }
+
+		//data=STRING
+		public Assignment getDataAssignment_2() { return cDataAssignment_2; }
+
+		//STRING
+		public RuleCall getDataSTRINGTerminalRuleCall_2_0() { return cDataSTRINGTerminalRuleCall_2_0; }
+
+		//"barcodeType"
+		public Keyword getBarcodeTypeKeyword_3() { return cBarcodeTypeKeyword_3; }
+
+		//barcodeType=StatemachinePOSPrinterBarcodeType
+		public Assignment getBarcodeTypeAssignment_4() { return cBarcodeTypeAssignment_4; }
+
+		//StatemachinePOSPrinterBarcodeType
+		public RuleCall getBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0() { return cBarcodeTypeStatemachinePOSPrinterBarcodeTypeEnumRuleCall_4_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_5() { return cCommercialAtKeyword_5; }
+
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Assignment getDeviceAssignment_6() { return cDeviceAssignment_6; }
+
+		//[StatemachinePeripheralDevicePOSPrinter]
+		public CrossReference getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0() { return cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1() { return cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintBitmapElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintBitmap");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrintBitmapKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cIdKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cBitmapIdAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cBitmapIdINTTerminalRuleCall_2_0 = (RuleCall)cBitmapIdAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintBitmap:
+		//	"printBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDevicePOSPrinter];
+		public ParserRule getRule() { return rule; }
+
+		//"printBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDevicePOSPrinter]
+		public Group getGroup() { return cGroup; }
+
+		//"printBitmap"
+		public Keyword getPrintBitmapKeyword_0() { return cPrintBitmapKeyword_0; }
+
+		//"id"
+		public Keyword getIdKeyword_1() { return cIdKeyword_1; }
+
+		//bitmapId=INT
+		public Assignment getBitmapIdAssignment_2() { return cBitmapIdAssignment_2; }
+
+		//INT
+		public RuleCall getBitmapIdINTTerminalRuleCall_2_0() { return cBitmapIdINTTerminalRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDevicePOSPrinter]
+		public CrossReference getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0() { return cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintCutElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintCut");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrintCutKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cTextKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cTextStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cTextAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintCut:
+		//	"printCut" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter];
+		public ParserRule getRule() { return rule; }
+
+		//"printCut" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter]
+		public Group getGroup() { return cGroup; }
+
+		//"printCut"
+		public Keyword getPrintCutKeyword_0() { return cPrintCutKeyword_0; }
+
+		//"text"
+		public Keyword getTextKeyword_1() { return cTextKeyword_1; }
+
+		//text=StatemachineActionFieldConcatenation
+		public Assignment getTextAssignment_2() { return cTextAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getTextStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cTextStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDevicePOSPrinter]
+		public CrossReference getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0() { return cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintNormalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintNormal");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrintNormalKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cTextKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cTextStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cTextAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintNormal:
+		//	"printNormal" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter];
+		public ParserRule getRule() { return rule; }
+
+		//"printNormal" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter]
+		public Group getGroup() { return cGroup; }
+
+		//"printNormal"
+		public Keyword getPrintNormalKeyword_0() { return cPrintNormalKeyword_0; }
+
+		//"text"
+		public Keyword getTextKeyword_1() { return cTextKeyword_1; }
+
+		//text=StatemachineActionFieldConcatenation
+		public Assignment getTextAssignment_2() { return cTextAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getTextStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cTextStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDevicePOSPrinter]
+		public CrossReference getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0() { return cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintRegisterBitmapElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintRegisterBitmap");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRegisterBitmapKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cIdKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cBitmapIdAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cBitmapIdINTTerminalRuleCall_2_0 = (RuleCall)cBitmapIdAssignment_2.eContents().get(0);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameSTRINGTerminalRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDeviceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0 = (CrossReference)cDeviceAssignment_6.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintRegisterBitmap:
+		//	"registerBitmap" "id" bitmapId=INT "name" name=STRING "@" device=[StatemachinePeripheralDevicePOSPrinter];
+		public ParserRule getRule() { return rule; }
+
+		//"registerBitmap" "id" bitmapId=INT "name" name=STRING "@" device=[StatemachinePeripheralDevicePOSPrinter]
+		public Group getGroup() { return cGroup; }
+
+		//"registerBitmap"
+		public Keyword getRegisterBitmapKeyword_0() { return cRegisterBitmapKeyword_0; }
+
+		//"id"
+		public Keyword getIdKeyword_1() { return cIdKeyword_1; }
+
+		//bitmapId=INT
+		public Assignment getBitmapIdAssignment_2() { return cBitmapIdAssignment_2; }
+
+		//INT
+		public RuleCall getBitmapIdINTTerminalRuleCall_2_0() { return cBitmapIdINTTerminalRuleCall_2_0; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=STRING
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//STRING
+		public RuleCall getNameSTRINGTerminalRuleCall_4_0() { return cNameSTRINGTerminalRuleCall_4_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_5() { return cCommercialAtKeyword_5; }
+
+		//device=[StatemachinePeripheralDevicePOSPrinter]
+		public Assignment getDeviceAssignment_6() { return cDeviceAssignment_6; }
+
+		//[StatemachinePeripheralDevicePOSPrinter]
+		public CrossReference getDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0() { return cDeviceStatemachinePeripheralDevicePOSPrinterCrossReference_6_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1() { return cDeviceStatemachinePeripheralDevicePOSPrinterIDTerminalRuleCall_6_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTOpenElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTOpen");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentOpenKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cHostKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cHostAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cHostStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cHostAssignment_2.eContents().get(0);
+		private final Keyword cPortKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cPortAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cPortStatemachineActionFieldConcatenationParserRuleCall_4_0 = (RuleCall)cPortAssignment_4.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDeviceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_6_0 = (CrossReference)cDeviceAssignment_6.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_6_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTOpen:
+		//	"paymentOpen" "host" host=StatemachineActionFieldConcatenation "port" port=StatemachineActionFieldConcatenation "@"
+		//	device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentOpen" "host" host=StatemachineActionFieldConcatenation "port" port=StatemachineActionFieldConcatenation "@"
+		//device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentOpen"
+		public Keyword getPaymentOpenKeyword_0() { return cPaymentOpenKeyword_0; }
+
+		//"host"
+		public Keyword getHostKeyword_1() { return cHostKeyword_1; }
+
+		//host=StatemachineActionFieldConcatenation
+		public Assignment getHostAssignment_2() { return cHostAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getHostStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cHostStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"port"
+		public Keyword getPortKeyword_3() { return cPortKeyword_3; }
+
+		//port=StatemachineActionFieldConcatenation
+		public Assignment getPortAssignment_4() { return cPortAssignment_4; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getPortStatemachineActionFieldConcatenationParserRuleCall_4_0() { return cPortStatemachineActionFieldConcatenationParserRuleCall_4_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_5() { return cCommercialAtKeyword_5; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_6() { return cDeviceAssignment_6; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_6_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_6_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTCloseElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTClose");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentCloseKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cDeviceAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_2_0 = (CrossReference)cDeviceAssignment_2.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_2_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTClose:
+		//	"paymentClose" "@" device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentClose" "@" device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentClose"
+		public Keyword getPaymentCloseKeyword_0() { return cPaymentCloseKeyword_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_1() { return cCommercialAtKeyword_1; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_2() { return cDeviceAssignment_2; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_2_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_2_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTAcknowledgeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTAcknowledge");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentAcknowledgeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cDeviceAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_2_0 = (CrossReference)cDeviceAssignment_2.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_2_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTAcknowledge:
+		//	"paymentAcknowledge" "@" device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentAcknowledge" "@" device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentAcknowledge"
+		public Keyword getPaymentAcknowledgeKeyword_0() { return cPaymentAcknowledgeKeyword_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_1() { return cCommercialAtKeyword_1; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_2() { return cDeviceAssignment_2; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_2_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_2_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTReversalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTReversal");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentReversalKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cWithPasswordKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cPasswordAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cPasswordAssignment_2.eContents().get(0);
+		private final Keyword cOfReceiptKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cReceiptAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0 = (RuleCall)cReceiptAssignment_4.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDeviceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_6_0 = (CrossReference)cDeviceAssignment_6.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_6_0.eContents().get(1);
+		
+		////StatemachineActionPeripheralPTBalanceRequest:
+		////	'balanceRequest' '@' device=[StatemachinePeripheralDevicePT];
+		////StatemachineActionPeripheralPTPrepaidTopUp:
+		////	'prepaidTopUp' 'of' source=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+		//StatemachineActionPeripheralPTReversal:
+		//	"paymentReversal" "withPassword" password=StatemachineActionFieldConcatenation "ofReceipt"
+		//	receipt=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentReversal" "withPassword" password=StatemachineActionFieldConcatenation "ofReceipt"
+		//receipt=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentReversal"
+		public Keyword getPaymentReversalKeyword_0() { return cPaymentReversalKeyword_0; }
+
+		//"withPassword"
+		public Keyword getWithPasswordKeyword_1() { return cWithPasswordKeyword_1; }
+
+		//password=StatemachineActionFieldConcatenation
+		public Assignment getPasswordAssignment_2() { return cPasswordAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"ofReceipt"
+		public Keyword getOfReceiptKeyword_3() { return cOfReceiptKeyword_3; }
+
+		//receipt=StatemachineActionFieldConcatenation
+		public Assignment getReceiptAssignment_4() { return cReceiptAssignment_4; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0() { return cReceiptStatemachineActionFieldConcatenationParserRuleCall_4_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_5() { return cCommercialAtKeyword_5; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_6() { return cDeviceAssignment_6; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_6_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_6_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTRegistrationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTRegistration");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentRegistrationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cWithPasswordKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cPasswordAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cPasswordAssignment_2.eContents().get(0);
+		private final Keyword cConfigurationKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cConfigurationAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cConfigurationSTRINGTerminalRuleCall_4_0 = (RuleCall)cConfigurationAssignment_4.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDeviceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_6_0 = (CrossReference)cDeviceAssignment_6.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_6_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTRegistration:
+		//	"paymentRegistration" "withPassword" password=StatemachineActionFieldConcatenation "configuration"
+		//	configuration=STRING "@" device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentRegistration" "withPassword" password=StatemachineActionFieldConcatenation "configuration" configuration=STRING
+		//"@" device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentRegistration"
+		public Keyword getPaymentRegistrationKeyword_0() { return cPaymentRegistrationKeyword_0; }
+
+		//"withPassword"
+		public Keyword getWithPasswordKeyword_1() { return cWithPasswordKeyword_1; }
+
+		//password=StatemachineActionFieldConcatenation
+		public Assignment getPasswordAssignment_2() { return cPasswordAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cPasswordStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"configuration"
+		public Keyword getConfigurationKeyword_3() { return cConfigurationKeyword_3; }
+
+		//configuration=STRING
+		public Assignment getConfigurationAssignment_4() { return cConfigurationAssignment_4; }
+
+		//STRING
+		public RuleCall getConfigurationSTRINGTerminalRuleCall_4_0() { return cConfigurationSTRINGTerminalRuleCall_4_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_5() { return cCommercialAtKeyword_5; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_6() { return cDeviceAssignment_6; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_6_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_6_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_6_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTAuthorizationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTAuthorization");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentAuthorizationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cOfAmountKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cAmountAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cAmountStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cAmountAssignment_2.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDeviceAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_4_0 = (CrossReference)cDeviceAssignment_4.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_4_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_4_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTAuthorization:
+		//	"paymentAuthorization" "ofAmount" amount=StatemachineActionFieldConcatenation "@"
+		//	device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentAuthorization" "ofAmount" amount=StatemachineActionFieldConcatenation "@"
+		//device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentAuthorization"
+		public Keyword getPaymentAuthorizationKeyword_0() { return cPaymentAuthorizationKeyword_0; }
+
+		//"ofAmount"
+		public Keyword getOfAmountKeyword_1() { return cOfAmountKeyword_1; }
+
+		//amount=StatemachineActionFieldConcatenation
+		public Assignment getAmountAssignment_2() { return cAmountAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getAmountStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cAmountStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_3() { return cCommercialAtKeyword_3; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_4() { return cDeviceAssignment_4; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_4_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_4_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_4_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_4_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPTResponseElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPTResponse");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentResponseKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cFromKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cDeviceAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cDeviceStatemachinePeripheralDevicePTCrossReference_2_0 = (CrossReference)cDeviceAssignment_2.eContents().get(0);
+		private final RuleCall cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1 = (RuleCall)cDeviceStatemachinePeripheralDevicePTCrossReference_2_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPTResponse:
+		//	"paymentResponse" "from" device=[StatemachinePeripheralDevicePT];
+		public ParserRule getRule() { return rule; }
+
+		//"paymentResponse" "from" device=[StatemachinePeripheralDevicePT]
+		public Group getGroup() { return cGroup; }
+
+		//"paymentResponse"
+		public Keyword getPaymentResponseKeyword_0() { return cPaymentResponseKeyword_0; }
+
+		//"from"
+		public Keyword getFromKeyword_1() { return cFromKeyword_1; }
+
+		//device=[StatemachinePeripheralDevicePT]
+		public Assignment getDeviceAssignment_2() { return cDeviceAssignment_2; }
+
+		//[StatemachinePeripheralDevicePT]
+		public CrossReference getDeviceStatemachinePeripheralDevicePTCrossReference_2_0() { return cDeviceStatemachinePeripheralDevicePTCrossReference_2_0; }
+
+		//ID
+		public RuleCall getDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1() { return cDeviceStatemachinePeripheralDevicePTIDTerminalRuleCall_2_0_1; }
+	}
+
+	public class StatemachineActionPeripheralPrintReportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionPeripheralPrintReport");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrintReportKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cReportAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cReportReportCrossReference_1_0 = (CrossReference)cReportAssignment_1.eContents().get(0);
+		private final RuleCall cReportReportIDTerminalRuleCall_1_0_1 = (RuleCall)cReportReportCrossReference_1_0.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cHasFilterAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cHasFilterFromKeyword_2_0_0 = (Keyword)cHasFilterAssignment_2_0.eContents().get(0);
+		private final Assignment cKeyAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cKeyStatemachineStorageCrossReference_2_1_0 = (CrossReference)cKeyAssignment_2_1.eContents().get(0);
+		private final RuleCall cKeyStatemachineStorageIDTerminalRuleCall_2_1_0_1 = (RuleCall)cKeyStatemachineStorageCrossReference_2_1_0.eContents().get(1);
+		
+		//StatemachineActionPeripheralPrintReport:
+		//	"printReport" report=[report::Report] (hasFilter?="from" key=[StatemachineStorage])?;
+		public ParserRule getRule() { return rule; }
+
+		//"printReport" report=[report::Report] (hasFilter?="from" key=[StatemachineStorage])?
+		public Group getGroup() { return cGroup; }
+
+		//"printReport"
+		public Keyword getPrintReportKeyword_0() { return cPrintReportKeyword_0; }
+
+		//report=[report::Report]
+		public Assignment getReportAssignment_1() { return cReportAssignment_1; }
+
+		//[report::Report]
+		public CrossReference getReportReportCrossReference_1_0() { return cReportReportCrossReference_1_0; }
+
+		//ID
+		public RuleCall getReportReportIDTerminalRuleCall_1_0_1() { return cReportReportIDTerminalRuleCall_1_0_1; }
+
+		//(hasFilter?="from" key=[StatemachineStorage])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//hasFilter?="from"
+		public Assignment getHasFilterAssignment_2_0() { return cHasFilterAssignment_2_0; }
+
+		//"from"
+		public Keyword getHasFilterFromKeyword_2_0_0() { return cHasFilterFromKeyword_2_0_0; }
+
+		//key=[StatemachineStorage]
+		public Assignment getKeyAssignment_2_1() { return cKeyAssignment_2_1; }
+
+		//[StatemachineStorage]
+		public CrossReference getKeyStatemachineStorageCrossReference_2_1_0() { return cKeyStatemachineStorageCrossReference_2_1_0; }
+
+		//ID
+		public RuleCall getKeyStatemachineStorageIDTerminalRuleCall_2_1_0_1() { return cKeyStatemachineStorageIDTerminalRuleCall_2_1_0_1; }
+	}
+
+	public class StatemachineActionFieldSourceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSource");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineActionFieldSourceStringParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineActionFieldSourceNumberParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineActionFieldSourceEvaluateParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cStatemachineActionFieldSourceTranslateParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cStatemachineActionFieldGetParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cStatemachineFunctionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cStatemachineStorageRetrieveParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cStatemachineActionFieldSourceDtoAttributeParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cStatemachineActionFieldSourceEventParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cStatemachineActionPeripheralPTResponseParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		
+		//// fields
+		//StatemachineActionFieldSource:
+		//	StatemachineActionFieldSourceString | StatemachineActionFieldSourceNumber | StatemachineActionFieldSourceEvaluate |
+		//	StatemachineActionFieldSourceTranslate | StatemachineActionFieldGet | StatemachineFunction |
+		//	StatemachineStorageRetrieve | StatemachineActionFieldSourceDtoAttribute | StatemachineActionFieldSourceEvent |
+		//	StatemachineActionPeripheralPTResponse;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineActionFieldSourceString | StatemachineActionFieldSourceNumber | StatemachineActionFieldSourceEvaluate |
+		//StatemachineActionFieldSourceTranslate | StatemachineActionFieldGet | StatemachineFunction |
+		//StatemachineStorageRetrieve | StatemachineActionFieldSourceDtoAttribute | StatemachineActionFieldSourceEvent |
+		//StatemachineActionPeripheralPTResponse
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineActionFieldSourceString
+		public RuleCall getStatemachineActionFieldSourceStringParserRuleCall_0() { return cStatemachineActionFieldSourceStringParserRuleCall_0; }
+
+		//StatemachineActionFieldSourceNumber
+		public RuleCall getStatemachineActionFieldSourceNumberParserRuleCall_1() { return cStatemachineActionFieldSourceNumberParserRuleCall_1; }
+
+		//StatemachineActionFieldSourceEvaluate
+		public RuleCall getStatemachineActionFieldSourceEvaluateParserRuleCall_2() { return cStatemachineActionFieldSourceEvaluateParserRuleCall_2; }
+
+		//StatemachineActionFieldSourceTranslate
+		public RuleCall getStatemachineActionFieldSourceTranslateParserRuleCall_3() { return cStatemachineActionFieldSourceTranslateParserRuleCall_3; }
+
+		//StatemachineActionFieldGet
+		public RuleCall getStatemachineActionFieldGetParserRuleCall_4() { return cStatemachineActionFieldGetParserRuleCall_4; }
+
+		//StatemachineFunction
+		public RuleCall getStatemachineFunctionParserRuleCall_5() { return cStatemachineFunctionParserRuleCall_5; }
+
+		//StatemachineStorageRetrieve
+		public RuleCall getStatemachineStorageRetrieveParserRuleCall_6() { return cStatemachineStorageRetrieveParserRuleCall_6; }
+
+		//StatemachineActionFieldSourceDtoAttribute
+		public RuleCall getStatemachineActionFieldSourceDtoAttributeParserRuleCall_7() { return cStatemachineActionFieldSourceDtoAttributeParserRuleCall_7; }
+
+		//StatemachineActionFieldSourceEvent
+		public RuleCall getStatemachineActionFieldSourceEventParserRuleCall_8() { return cStatemachineActionFieldSourceEventParserRuleCall_8; }
+
+		//StatemachineActionPeripheralPTResponse
+		public RuleCall getStatemachineActionPeripheralPTResponseParserRuleCall_9() { return cStatemachineActionPeripheralPTResponseParserRuleCall_9; }
+	}
+
+	public class StatemachineOperationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineOperation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cOperationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cOperationAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cOperationFunctionLibraryOperationCrossReference_1_0 = (CrossReference)cOperationAssignment_1.eContents().get(0);
+		private final RuleCall cOperationFunctionLibraryOperationIDTerminalRuleCall_1_0_1 = (RuleCall)cOperationFunctionLibraryOperationCrossReference_1_0.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cFirstAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cFirstStatemachineOperationParameterParserRuleCall_3_0 = (RuleCall)cFirstAssignment_3.eContents().get(0);
+		private final Assignment cMoreAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cMoreStatemachineOperationParameterMoreParserRuleCall_4_0 = (RuleCall)cMoreAssignment_4.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//StatemachineOperation:
+		//	"operation" operation=[function::FunctionLibraryOperation] "(" first=StatemachineOperationParameter?
+		//	more+=StatemachineOperationParameterMore* ")";
+		public ParserRule getRule() { return rule; }
+
+		//"operation" operation=[function::FunctionLibraryOperation] "(" first=StatemachineOperationParameter?
+		//more+=StatemachineOperationParameterMore* ")"
+		public Group getGroup() { return cGroup; }
+
+		//"operation"
+		public Keyword getOperationKeyword_0() { return cOperationKeyword_0; }
+
+		//operation=[function::FunctionLibraryOperation]
+		public Assignment getOperationAssignment_1() { return cOperationAssignment_1; }
+
+		//[function::FunctionLibraryOperation]
+		public CrossReference getOperationFunctionLibraryOperationCrossReference_1_0() { return cOperationFunctionLibraryOperationCrossReference_1_0; }
+
+		//ID
+		public RuleCall getOperationFunctionLibraryOperationIDTerminalRuleCall_1_0_1() { return cOperationFunctionLibraryOperationIDTerminalRuleCall_1_0_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//first=StatemachineOperationParameter?
+		public Assignment getFirstAssignment_3() { return cFirstAssignment_3; }
+
+		//StatemachineOperationParameter
+		public RuleCall getFirstStatemachineOperationParameterParserRuleCall_3_0() { return cFirstStatemachineOperationParameterParserRuleCall_3_0; }
+
+		//more+=StatemachineOperationParameterMore*
+		public Assignment getMoreAssignment_4() { return cMoreAssignment_4; }
+
+		//StatemachineOperationParameterMore
+		public RuleCall getMoreStatemachineOperationParameterMoreParserRuleCall_4_0() { return cMoreStatemachineOperationParameterMoreParserRuleCall_4_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class StatemachineGuardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineGuard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cGuardKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cGuardAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cGuardFunctionLibraryGuardCrossReference_1_0 = (CrossReference)cGuardAssignment_1.eContents().get(0);
+		private final RuleCall cGuardFunctionLibraryGuardIDTerminalRuleCall_1_0_1 = (RuleCall)cGuardFunctionLibraryGuardCrossReference_1_0.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cHasOnFailAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cHasOnFailOnFailKeyword_2_0_0 = (Keyword)cHasOnFailAssignment_2_0.eContents().get(0);
+		private final Keyword cCaptionKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Assignment cOnFailCaptionAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cOnFailCaptionTRANSLATABLESTRINGParserRuleCall_2_2_0 = (RuleCall)cOnFailCaptionAssignment_2_2.eContents().get(0);
+		private final Keyword cDescriptionKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
+		private final Assignment cOnFailDescriptionAssignment_2_4 = (Assignment)cGroup_2.eContents().get(4);
+		private final RuleCall cOnFailDescriptionTRANSLATABLESTRINGParserRuleCall_2_4_0 = (RuleCall)cOnFailDescriptionAssignment_2_4.eContents().get(0);
+		private final Keyword cTypeKeyword_2_5 = (Keyword)cGroup_2.eContents().get(5);
+		private final Assignment cOnFailTypeAssignment_2_6 = (Assignment)cGroup_2.eContents().get(6);
+		private final RuleCall cOnFailTypeStatemachineUserMessageTypeEnumRuleCall_2_6_0 = (RuleCall)cOnFailTypeAssignment_2_6.eContents().get(0);
+		
+		//StatemachineGuard:
+		//	"guard" guard=[function::FunctionLibraryGuard] (hasOnFail?="onFail" "caption" onFailCaption=TRANSLATABLESTRING
+		//	"description" onFailDescription=TRANSLATABLESTRING "type" onFailType=StatemachineUserMessageType)?;
+		public ParserRule getRule() { return rule; }
+
+		//"guard" guard=[function::FunctionLibraryGuard] (hasOnFail?="onFail" "caption" onFailCaption=TRANSLATABLESTRING
+		//"description" onFailDescription=TRANSLATABLESTRING "type" onFailType=StatemachineUserMessageType)?
+		public Group getGroup() { return cGroup; }
+
+		//"guard"
+		public Keyword getGuardKeyword_0() { return cGuardKeyword_0; }
+
+		//guard=[function::FunctionLibraryGuard]
+		public Assignment getGuardAssignment_1() { return cGuardAssignment_1; }
+
+		//[function::FunctionLibraryGuard]
+		public CrossReference getGuardFunctionLibraryGuardCrossReference_1_0() { return cGuardFunctionLibraryGuardCrossReference_1_0; }
+
+		//ID
+		public RuleCall getGuardFunctionLibraryGuardIDTerminalRuleCall_1_0_1() { return cGuardFunctionLibraryGuardIDTerminalRuleCall_1_0_1; }
+
+		//(hasOnFail?="onFail" "caption" onFailCaption=TRANSLATABLESTRING "description" onFailDescription=TRANSLATABLESTRING
+		//"type" onFailType=StatemachineUserMessageType)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//hasOnFail?="onFail"
+		public Assignment getHasOnFailAssignment_2_0() { return cHasOnFailAssignment_2_0; }
+
+		//"onFail"
+		public Keyword getHasOnFailOnFailKeyword_2_0_0() { return cHasOnFailOnFailKeyword_2_0_0; }
+
+		//"caption"
+		public Keyword getCaptionKeyword_2_1() { return cCaptionKeyword_2_1; }
+
+		//onFailCaption=TRANSLATABLESTRING
+		public Assignment getOnFailCaptionAssignment_2_2() { return cOnFailCaptionAssignment_2_2; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getOnFailCaptionTRANSLATABLESTRINGParserRuleCall_2_2_0() { return cOnFailCaptionTRANSLATABLESTRINGParserRuleCall_2_2_0; }
+
+		//"description"
+		public Keyword getDescriptionKeyword_2_3() { return cDescriptionKeyword_2_3; }
+
+		//onFailDescription=TRANSLATABLESTRING
+		public Assignment getOnFailDescriptionAssignment_2_4() { return cOnFailDescriptionAssignment_2_4; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getOnFailDescriptionTRANSLATABLESTRINGParserRuleCall_2_4_0() { return cOnFailDescriptionTRANSLATABLESTRINGParserRuleCall_2_4_0; }
+
+		//"type"
+		public Keyword getTypeKeyword_2_5() { return cTypeKeyword_2_5; }
+
+		//onFailType=StatemachineUserMessageType
+		public Assignment getOnFailTypeAssignment_2_6() { return cOnFailTypeAssignment_2_6; }
+
+		//StatemachineUserMessageType
+		public RuleCall getOnFailTypeStatemachineUserMessageTypeEnumRuleCall_2_6_0() { return cOnFailTypeStatemachineUserMessageTypeEnumRuleCall_2_6_0; }
+	}
+
+	public class StatemachineFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFunctionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cFunctionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cFunctionFunctionLibraryFunctionCrossReference_1_0 = (CrossReference)cFunctionAssignment_1.eContents().get(0);
+		private final RuleCall cFunctionFunctionLibraryFunctionIDTerminalRuleCall_1_0_1 = (RuleCall)cFunctionFunctionLibraryFunctionCrossReference_1_0.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cFirstAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cFirstStatemachineOperationParameterParserRuleCall_3_0 = (RuleCall)cFirstAssignment_3.eContents().get(0);
+		private final Assignment cMoreAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cMoreStatemachineOperationParameterMoreParserRuleCall_4_0 = (RuleCall)cMoreAssignment_4.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//StatemachineFunction:
+		//	"function" function=[function::FunctionLibraryFunction] "(" first=StatemachineOperationParameter?
+		//	more+=StatemachineOperationParameterMore* ")";
+		public ParserRule getRule() { return rule; }
+
+		//"function" function=[function::FunctionLibraryFunction] "(" first=StatemachineOperationParameter?
+		//more+=StatemachineOperationParameterMore* ")"
+		public Group getGroup() { return cGroup; }
+
+		//"function"
+		public Keyword getFunctionKeyword_0() { return cFunctionKeyword_0; }
+
+		//function=[function::FunctionLibraryFunction]
+		public Assignment getFunctionAssignment_1() { return cFunctionAssignment_1; }
+
+		//[function::FunctionLibraryFunction]
+		public CrossReference getFunctionFunctionLibraryFunctionCrossReference_1_0() { return cFunctionFunctionLibraryFunctionCrossReference_1_0; }
+
+		//ID
+		public RuleCall getFunctionFunctionLibraryFunctionIDTerminalRuleCall_1_0_1() { return cFunctionFunctionLibraryFunctionIDTerminalRuleCall_1_0_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//first=StatemachineOperationParameter?
+		public Assignment getFirstAssignment_3() { return cFirstAssignment_3; }
+
+		//StatemachineOperationParameter
+		public RuleCall getFirstStatemachineOperationParameterParserRuleCall_3_0() { return cFirstStatemachineOperationParameterParserRuleCall_3_0; }
+
+		//more+=StatemachineOperationParameterMore*
+		public Assignment getMoreAssignment_4() { return cMoreAssignment_4; }
+
+		//StatemachineOperationParameterMore
+		public RuleCall getMoreStatemachineOperationParameterMoreParserRuleCall_4_0() { return cMoreStatemachineOperationParameterMoreParserRuleCall_4_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class StatemachineStorageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineStorage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cStoreKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cContentAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cContentStatemachineActionFieldConcatenationParserRuleCall_1_0 = (RuleCall)cContentAssignment_1.eContents().get(0);
+		private final Keyword cWithKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cKeyAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cKeyIDTerminalRuleCall_3_0 = (RuleCall)cKeyAssignment_3.eContents().get(0);
+		private final Keyword cFullStopKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cAttributeAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cAttributeIDTerminalRuleCall_5_0 = (RuleCall)cAttributeAssignment_5.eContents().get(0);
+		
+		//StatemachineStorage:
+		//	"store" content=StatemachineActionFieldConcatenation "with" key=ID "." attribute=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"store" content=StatemachineActionFieldConcatenation "with" key=ID "." attribute=ID
+		public Group getGroup() { return cGroup; }
+
+		//"store"
+		public Keyword getStoreKeyword_0() { return cStoreKeyword_0; }
+
+		//content=StatemachineActionFieldConcatenation
+		public Assignment getContentAssignment_1() { return cContentAssignment_1; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getContentStatemachineActionFieldConcatenationParserRuleCall_1_0() { return cContentStatemachineActionFieldConcatenationParserRuleCall_1_0; }
+
+		//"with"
+		public Keyword getWithKeyword_2() { return cWithKeyword_2; }
+
+		//key=ID
+		public Assignment getKeyAssignment_3() { return cKeyAssignment_3; }
+
+		//ID
+		public RuleCall getKeyIDTerminalRuleCall_3_0() { return cKeyIDTerminalRuleCall_3_0; }
+
+		//"."
+		public Keyword getFullStopKeyword_4() { return cFullStopKeyword_4; }
+
+		//attribute=ID
+		public Assignment getAttributeAssignment_5() { return cAttributeAssignment_5; }
+
+		//ID
+		public RuleCall getAttributeIDTerminalRuleCall_5_0() { return cAttributeIDTerminalRuleCall_5_0; }
+	}
+
+	public class StatemachineStorageRetrieveElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineStorageRetrieve");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRetrieveKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cFromKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cKeyAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cKeyIDTerminalRuleCall_2_0 = (RuleCall)cKeyAssignment_2.eContents().get(0);
+		private final Keyword cFullStopKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cAttributeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cAttributeIDTerminalRuleCall_4_0 = (RuleCall)cAttributeAssignment_4.eContents().get(0);
+		
+		//StatemachineStorageRetrieve:
+		//	"retrieve" "from" key=ID "." attribute=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"retrieve" "from" key=ID "." attribute=ID
+		public Group getGroup() { return cGroup; }
+
+		//"retrieve"
+		public Keyword getRetrieveKeyword_0() { return cRetrieveKeyword_0; }
+
+		//"from"
+		public Keyword getFromKeyword_1() { return cFromKeyword_1; }
+
+		//key=ID
+		public Assignment getKeyAssignment_2() { return cKeyAssignment_2; }
+
+		//ID
+		public RuleCall getKeyIDTerminalRuleCall_2_0() { return cKeyIDTerminalRuleCall_2_0; }
+
+		//"."
+		public Keyword getFullStopKeyword_3() { return cFullStopKeyword_3; }
+
+		//attribute=ID
+		public Assignment getAttributeAssignment_4() { return cAttributeAssignment_4; }
+
+		//ID
+		public RuleCall getAttributeIDTerminalRuleCall_4_0() { return cAttributeIDTerminalRuleCall_4_0; }
+	}
+
+	public class StatemachineActionConditionalTransitionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionConditionalTransition");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cTransitionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cTransitionStatemachineStateCrossReference_1_0 = (CrossReference)cTransitionAssignment_1.eContents().get(0);
+		private final RuleCall cTransitionStatemachineStateIDTerminalRuleCall_1_0_1 = (RuleCall)cTransitionStatemachineStateCrossReference_1_0.eContents().get(1);
+		private final Assignment cGuardAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cGuardStatemachineGuardParserRuleCall_2_0 = (RuleCall)cGuardAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cActionsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cActionsStatemachineActionParserRuleCall_4_0 = (RuleCall)cActionsAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//StatemachineActionConditionalTransition:
+		//	"transition" transition=[StatemachineState] guard=StatemachineGuard "{" actions+=StatemachineAction* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"transition" transition=[StatemachineState] guard=StatemachineGuard "{" actions+=StatemachineAction* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"transition"
+		public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+		//transition=[StatemachineState]
+		public Assignment getTransitionAssignment_1() { return cTransitionAssignment_1; }
+
+		//[StatemachineState]
+		public CrossReference getTransitionStatemachineStateCrossReference_1_0() { return cTransitionStatemachineStateCrossReference_1_0; }
+
+		//ID
+		public RuleCall getTransitionStatemachineStateIDTerminalRuleCall_1_0_1() { return cTransitionStatemachineStateIDTerminalRuleCall_1_0_1; }
+
+		//guard=StatemachineGuard
+		public Assignment getGuardAssignment_2() { return cGuardAssignment_2; }
+
+		//StatemachineGuard
+		public RuleCall getGuardStatemachineGuardParserRuleCall_2_0() { return cGuardStatemachineGuardParserRuleCall_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//actions+=StatemachineAction*
+		public Assignment getActionsAssignment_4() { return cActionsAssignment_4; }
+
+		//StatemachineAction
+		public RuleCall getActionsStatemachineActionParserRuleCall_4_0() { return cActionsStatemachineActionParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class StatemachineActionFieldSourceStringElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceString");
+		private final Assignment cTextAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cTextSTRINGTerminalRuleCall_0 = (RuleCall)cTextAssignment.eContents().get(0);
+		
+		//StatemachineActionFieldSourceString:
+		//	text=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//text=STRING
+		public Assignment getTextAssignment() { return cTextAssignment; }
+
+		//STRING
+		public RuleCall getTextSTRINGTerminalRuleCall_0() { return cTextSTRINGTerminalRuleCall_0; }
+	}
+
+	public class StatemachineActionFieldSourceNumberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceNumber");
+		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cValueSignedNumberParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+		
+		//StatemachineActionFieldSourceNumber:
+		//	value=SignedNumber;
+		public ParserRule getRule() { return rule; }
+
+		//value=SignedNumber
+		public Assignment getValueAssignment() { return cValueAssignment; }
+
+		//SignedNumber
+		public RuleCall getValueSignedNumberParserRuleCall_0() { return cValueSignedNumberParserRuleCall_0; }
+	}
+
+	public class StatemachineActionFieldSourceEvaluateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceEvaluate");
+		private final Assignment cEvaluationtypeAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_0 = (RuleCall)cEvaluationtypeAssignment.eContents().get(0);
+		
+		//StatemachineActionFieldSourceEvaluate:
+		//	evaluationtype=StatemachineEvaluationType;
+		public ParserRule getRule() { return rule; }
+
+		//evaluationtype=StatemachineEvaluationType
+		public Assignment getEvaluationtypeAssignment() { return cEvaluationtypeAssignment; }
+
+		//StatemachineEvaluationType
+		public RuleCall getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_0() { return cEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_0; }
+	}
+
+	public class StatemachineActionFieldSourceEventElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceEvent");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceEventAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cEventKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//StatemachineActionFieldSourceEvent:
+		//	{StatemachineActionFieldSourceEvent} "event";
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceEvent} "event"
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceEvent}
+		public Action getStatemachineActionFieldSourceEventAction_0() { return cStatemachineActionFieldSourceEventAction_0; }
+
+		//"event"
+		public Keyword getEventKeyword_1() { return cEventKeyword_1; }
+	}
+
+	public class StatemachineActionFieldSourceTranslateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceTranslate");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTranslateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cTextAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cTextTRANSLATABLESTRINGParserRuleCall_1_0 = (RuleCall)cTextAssignment_1.eContents().get(0);
+		
+		//StatemachineActionFieldSourceTranslate:
+		//	"translate" text=TRANSLATABLESTRING;
+		public ParserRule getRule() { return rule; }
+
+		//"translate" text=TRANSLATABLESTRING
+		public Group getGroup() { return cGroup; }
+
+		//"translate"
+		public Keyword getTranslateKeyword_0() { return cTranslateKeyword_0; }
+
+		//text=TRANSLATABLESTRING
+		public Assignment getTextAssignment_1() { return cTextAssignment_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getTextTRANSLATABLESTRINGParserRuleCall_1_0() { return cTextTRANSLATABLESTRINGParserRuleCall_1_0; }
+	}
+
+	public class StatemachineActionFieldSourceDtoAttributeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceDtoAttribute");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDtoKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDtoAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDtoStatemachineControlDTOAttributeCrossReference_1_0 = (CrossReference)cDtoAssignment_1.eContents().get(0);
+		private final RuleCall cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cDtoStatemachineControlDTOAttributeCrossReference_1_0.eContents().get(1);
+		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cAttributeLDtoInheritedAttributeCrossReference_3_0 = (CrossReference)cAttributeAssignment_3.eContents().get(0);
+		private final RuleCall cAttributeLDtoInheritedAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributeLDtoInheritedAttributeCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionFieldSourceDtoAttribute:
+		//	"dto" dto=[StatemachineControlDTOAttribute] "." attribute=[dto::LDtoInheritedAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"dto" dto=[StatemachineControlDTOAttribute] "." attribute=[dto::LDtoInheritedAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"dto"
+		public Keyword getDtoKeyword_0() { return cDtoKeyword_0; }
+
+		//dto=[StatemachineControlDTOAttribute]
+		public Assignment getDtoAssignment_1() { return cDtoAssignment_1; }
+
+		//[StatemachineControlDTOAttribute]
+		public CrossReference getDtoStatemachineControlDTOAttributeCrossReference_1_0() { return cDtoStatemachineControlDTOAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_1_0_1() { return cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_1_0_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
+
+		//attribute=[dto::LDtoInheritedAttribute]
+		public Assignment getAttributeAssignment_3() { return cAttributeAssignment_3; }
+
+		//[dto::LDtoInheritedAttribute]
+		public CrossReference getAttributeLDtoInheritedAttributeCrossReference_3_0() { return cAttributeLDtoInheritedAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getAttributeLDtoInheritedAttributeIDTerminalRuleCall_3_0_1() { return cAttributeLDtoInheritedAttributeIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionFieldSourceMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceMore");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineActionFieldSourceStringMoreParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineActionFieldSourceNumberMoreParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cStatemachineActionFieldSourceTranslateMoreParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cStatemachineActionFieldGetMoreParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cStatemachineOperationMoreParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cStatemachineStorageRetrieveMoreParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		
+		//StatemachineActionFieldSourceMore returns StatemachineActionFieldSource:
+		//	StatemachineActionFieldSourceStringMore | StatemachineActionFieldSourceNumberMore |
+		//	StatemachineActionFieldSourceEvaluateMore | StatemachineActionFieldSourceTranslateMore |
+		//	StatemachineActionFieldGetMore | StatemachineOperationMore | StatemachineStorageRetrieveMore |
+		//	StatemachineActionFieldSourceDtoAttributeMore;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineActionFieldSourceStringMore | StatemachineActionFieldSourceNumberMore |
+		//StatemachineActionFieldSourceEvaluateMore | StatemachineActionFieldSourceTranslateMore |
+		//StatemachineActionFieldGetMore | StatemachineOperationMore | StatemachineStorageRetrieveMore |
+		//StatemachineActionFieldSourceDtoAttributeMore
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineActionFieldSourceStringMore
+		public RuleCall getStatemachineActionFieldSourceStringMoreParserRuleCall_0() { return cStatemachineActionFieldSourceStringMoreParserRuleCall_0; }
+
+		//StatemachineActionFieldSourceNumberMore
+		public RuleCall getStatemachineActionFieldSourceNumberMoreParserRuleCall_1() { return cStatemachineActionFieldSourceNumberMoreParserRuleCall_1; }
+
+		//StatemachineActionFieldSourceEvaluateMore
+		public RuleCall getStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2() { return cStatemachineActionFieldSourceEvaluateMoreParserRuleCall_2; }
+
+		//StatemachineActionFieldSourceTranslateMore
+		public RuleCall getStatemachineActionFieldSourceTranslateMoreParserRuleCall_3() { return cStatemachineActionFieldSourceTranslateMoreParserRuleCall_3; }
+
+		//StatemachineActionFieldGetMore
+		public RuleCall getStatemachineActionFieldGetMoreParserRuleCall_4() { return cStatemachineActionFieldGetMoreParserRuleCall_4; }
+
+		//StatemachineOperationMore
+		public RuleCall getStatemachineOperationMoreParserRuleCall_5() { return cStatemachineOperationMoreParserRuleCall_5; }
+
+		//StatemachineStorageRetrieveMore
+		public RuleCall getStatemachineStorageRetrieveMoreParserRuleCall_6() { return cStatemachineStorageRetrieveMoreParserRuleCall_6; }
+
+		//StatemachineActionFieldSourceDtoAttributeMore
+		public RuleCall getStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7() { return cStatemachineActionFieldSourceDtoAttributeMoreParserRuleCall_7; }
+	}
+
+	public class StatemachineActionFieldSourceStringMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceStringMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceStringAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cTextAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cTextSTRINGTerminalRuleCall_2_0 = (RuleCall)cTextAssignment_2.eContents().get(0);
+		
+		//StatemachineActionFieldSourceStringMore returns StatemachineActionFieldSourceString:
+		//	{StatemachineActionFieldSourceString} "+" text=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceString} "+" text=STRING
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceString}
+		public Action getStatemachineActionFieldSourceStringAction_0() { return cStatemachineActionFieldSourceStringAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//text=STRING
+		public Assignment getTextAssignment_2() { return cTextAssignment_2; }
+
+		//STRING
+		public RuleCall getTextSTRINGTerminalRuleCall_2_0() { return cTextSTRINGTerminalRuleCall_2_0; }
+	}
+
+	public class StatemachineActionFieldSourceNumberMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceNumberMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceNumberAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cValueSignedNumberParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
+		
+		//StatemachineActionFieldSourceNumberMore returns StatemachineActionFieldSourceNumber:
+		//	{StatemachineActionFieldSourceNumber} "+" value=SignedNumber;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceNumber} "+" value=SignedNumber
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceNumber}
+		public Action getStatemachineActionFieldSourceNumberAction_0() { return cStatemachineActionFieldSourceNumberAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//value=SignedNumber
+		public Assignment getValueAssignment_2() { return cValueAssignment_2; }
+
+		//SignedNumber
+		public RuleCall getValueSignedNumberParserRuleCall_2_0() { return cValueSignedNumberParserRuleCall_2_0; }
+	}
+
+	public class StatemachineActionFieldSourceEvaluateMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceEvaluateMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceEvaluateAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cEvaluationtypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_2_0 = (RuleCall)cEvaluationtypeAssignment_2.eContents().get(0);
+		
+		//StatemachineActionFieldSourceEvaluateMore returns StatemachineActionFieldSourceEvaluate:
+		//	{StatemachineActionFieldSourceEvaluate} "+" evaluationtype=StatemachineEvaluationType;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceEvaluate} "+" evaluationtype=StatemachineEvaluationType
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceEvaluate}
+		public Action getStatemachineActionFieldSourceEvaluateAction_0() { return cStatemachineActionFieldSourceEvaluateAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//evaluationtype=StatemachineEvaluationType
+		public Assignment getEvaluationtypeAssignment_2() { return cEvaluationtypeAssignment_2; }
+
+		//StatemachineEvaluationType
+		public RuleCall getEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_2_0() { return cEvaluationtypeStatemachineEvaluationTypeEnumRuleCall_2_0; }
+	}
+
+	public class StatemachineActionFieldSourceTranslateMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceTranslateMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceTranslateAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cTranslateKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cTextAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cTextTRANSLATABLESTRINGParserRuleCall_3_0 = (RuleCall)cTextAssignment_3.eContents().get(0);
+		
+		//StatemachineActionFieldSourceTranslateMore returns StatemachineActionFieldSourceTranslate:
+		//	{StatemachineActionFieldSourceTranslate} "+" "translate" text=TRANSLATABLESTRING;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceTranslate} "+" "translate" text=TRANSLATABLESTRING
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceTranslate}
+		public Action getStatemachineActionFieldSourceTranslateAction_0() { return cStatemachineActionFieldSourceTranslateAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//"translate"
+		public Keyword getTranslateKeyword_2() { return cTranslateKeyword_2; }
+
+		//text=TRANSLATABLESTRING
+		public Assignment getTextAssignment_3() { return cTextAssignment_3; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getTextTRANSLATABLESTRINGParserRuleCall_3_0() { return cTextTRANSLATABLESTRINGParserRuleCall_3_0; }
+	}
+
+	public class StatemachineActionFieldGetMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldGetMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldGetAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cGetKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cAttributeStatemachineControlFieldAttributeCrossReference_3_0 = (CrossReference)cAttributeAssignment_3.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributeStatemachineControlFieldAttributeCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionFieldGetMore returns StatemachineActionFieldGet:
+		//	{StatemachineActionFieldGet} "+" "get" attribute=[StatemachineControlFieldAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldGet} "+" "get" attribute=[StatemachineControlFieldAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldGet}
+		public Action getStatemachineActionFieldGetAction_0() { return cStatemachineActionFieldGetAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//"get"
+		public Keyword getGetKeyword_2() { return cGetKeyword_2; }
+
+		//attribute=[StatemachineControlFieldAttribute]
+		public Assignment getAttributeAssignment_3() { return cAttributeAssignment_3; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getAttributeStatemachineControlFieldAttributeCrossReference_3_0() { return cAttributeStatemachineControlFieldAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1() { return cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineOperationMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineOperationMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineOperationAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cOperationKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cOperationAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cOperationFunctionLibraryOperationCrossReference_3_0 = (CrossReference)cOperationAssignment_3.eContents().get(0);
+		private final RuleCall cOperationFunctionLibraryOperationIDTerminalRuleCall_3_0_1 = (RuleCall)cOperationFunctionLibraryOperationCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineOperationMore returns StatemachineOperation:
+		//	{StatemachineOperation} "+" "operation" operation=[function::FunctionLibraryOperation];
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineOperation} "+" "operation" operation=[function::FunctionLibraryOperation]
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineOperation}
+		public Action getStatemachineOperationAction_0() { return cStatemachineOperationAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//"operation"
+		public Keyword getOperationKeyword_2() { return cOperationKeyword_2; }
+
+		//operation=[function::FunctionLibraryOperation]
+		public Assignment getOperationAssignment_3() { return cOperationAssignment_3; }
+
+		//[function::FunctionLibraryOperation]
+		public CrossReference getOperationFunctionLibraryOperationCrossReference_3_0() { return cOperationFunctionLibraryOperationCrossReference_3_0; }
+
+		//ID
+		public RuleCall getOperationFunctionLibraryOperationIDTerminalRuleCall_3_0_1() { return cOperationFunctionLibraryOperationIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineStorageRetrieveMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineStorageRetrieveMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineStorageRetrieveAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cRetrieveKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cFromKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cKeyAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cKeyIDTerminalRuleCall_4_0 = (RuleCall)cKeyAssignment_4.eContents().get(0);
+		private final Keyword cFullStopKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cAttributeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cAttributeIDTerminalRuleCall_6_0 = (RuleCall)cAttributeAssignment_6.eContents().get(0);
+		
+		//StatemachineStorageRetrieveMore returns StatemachineStorageRetrieve:
+		//	{StatemachineStorageRetrieve} "+" "retrieve" "from" key=ID "." attribute=ID;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineStorageRetrieve} "+" "retrieve" "from" key=ID "." attribute=ID
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineStorageRetrieve}
+		public Action getStatemachineStorageRetrieveAction_0() { return cStatemachineStorageRetrieveAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//"retrieve"
+		public Keyword getRetrieveKeyword_2() { return cRetrieveKeyword_2; }
+
+		//"from"
+		public Keyword getFromKeyword_3() { return cFromKeyword_3; }
+
+		//key=ID
+		public Assignment getKeyAssignment_4() { return cKeyAssignment_4; }
+
+		//ID
+		public RuleCall getKeyIDTerminalRuleCall_4_0() { return cKeyIDTerminalRuleCall_4_0; }
+
+		//"."
+		public Keyword getFullStopKeyword_5() { return cFullStopKeyword_5; }
+
+		//attribute=ID
+		public Assignment getAttributeAssignment_6() { return cAttributeAssignment_6; }
+
+		//ID
+		public RuleCall getAttributeIDTerminalRuleCall_6_0() { return cAttributeIDTerminalRuleCall_6_0; }
+	}
+
+	public class StatemachineActionFieldSourceDtoAttributeMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSourceDtoAttributeMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineActionFieldSourceDtoAttributeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cDtoKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDtoAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDtoStatemachineControlDTOAttributeCrossReference_3_0 = (CrossReference)cDtoAssignment_3.eContents().get(0);
+		private final RuleCall cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cDtoStatemachineControlDTOAttributeCrossReference_3_0.eContents().get(1);
+		private final Keyword cFullStopKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cAttributeAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cAttributeLDtoInheritedAttributeCrossReference_5_0 = (CrossReference)cAttributeAssignment_5.eContents().get(0);
+		private final RuleCall cAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1 = (RuleCall)cAttributeLDtoInheritedAttributeCrossReference_5_0.eContents().get(1);
+		
+		//StatemachineActionFieldSourceDtoAttributeMore returns StatemachineActionFieldSourceDtoAttribute:
+		//	{StatemachineActionFieldSourceDtoAttribute} "+" "dto" dto=[StatemachineControlDTOAttribute] "."
+		//	attribute=[dto::LDtoInheritedAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineActionFieldSourceDtoAttribute} "+" "dto" dto=[StatemachineControlDTOAttribute] "."
+		//attribute=[dto::LDtoInheritedAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineActionFieldSourceDtoAttribute}
+		public Action getStatemachineActionFieldSourceDtoAttributeAction_0() { return cStatemachineActionFieldSourceDtoAttributeAction_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1() { return cPlusSignKeyword_1; }
+
+		//"dto"
+		public Keyword getDtoKeyword_2() { return cDtoKeyword_2; }
+
+		//dto=[StatemachineControlDTOAttribute]
+		public Assignment getDtoAssignment_3() { return cDtoAssignment_3; }
+
+		//[StatemachineControlDTOAttribute]
+		public CrossReference getDtoStatemachineControlDTOAttributeCrossReference_3_0() { return cDtoStatemachineControlDTOAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1() { return cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_4() { return cFullStopKeyword_4; }
+
+		//attribute=[dto::LDtoInheritedAttribute]
+		public Assignment getAttributeAssignment_5() { return cAttributeAssignment_5; }
+
+		//[dto::LDtoInheritedAttribute]
+		public CrossReference getAttributeLDtoInheritedAttributeCrossReference_5_0() { return cAttributeLDtoInheritedAttributeCrossReference_5_0; }
+
+		//ID
+		public RuleCall getAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1() { return cAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1; }
+	}
+
+	public class StatemachineActionFieldConcatenationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldConcatenation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cFirstAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cFirstStatemachineActionFieldSourceParserRuleCall_0_0 = (RuleCall)cFirstAssignment_0.eContents().get(0);
+		private final Assignment cMoreAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cMoreStatemachineActionFieldSourceMoreParserRuleCall_1_0 = (RuleCall)cMoreAssignment_1.eContents().get(0);
+		
+		//StatemachineActionFieldConcatenation:
+		//	first=StatemachineActionFieldSource more+=StatemachineActionFieldSourceMore*;
+		public ParserRule getRule() { return rule; }
+
+		//first=StatemachineActionFieldSource more+=StatemachineActionFieldSourceMore*
+		public Group getGroup() { return cGroup; }
+
+		//first=StatemachineActionFieldSource
+		public Assignment getFirstAssignment_0() { return cFirstAssignment_0; }
+
+		//StatemachineActionFieldSource
+		public RuleCall getFirstStatemachineActionFieldSourceParserRuleCall_0_0() { return cFirstStatemachineActionFieldSourceParserRuleCall_0_0; }
+
+		//more+=StatemachineActionFieldSourceMore*
+		public Assignment getMoreAssignment_1() { return cMoreAssignment_1; }
+
+		//StatemachineActionFieldSourceMore
+		public RuleCall getMoreStatemachineActionFieldSourceMoreParserRuleCall_1_0() { return cMoreStatemachineActionFieldSourceMoreParserRuleCall_1_0; }
+	}
+
+	public class StatemachineOperationParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineOperationParameter");
+		private final Assignment cSourceAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cSourceStatemachineActionFieldConcatenationParserRuleCall_0 = (RuleCall)cSourceAssignment.eContents().get(0);
+		
+		//StatemachineOperationParameter:
+		//	source=StatemachineActionFieldConcatenation;
+		public ParserRule getRule() { return rule; }
+
+		//source=StatemachineActionFieldConcatenation
+		public Assignment getSourceAssignment() { return cSourceAssignment; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getSourceStatemachineActionFieldConcatenationParserRuleCall_0() { return cSourceStatemachineActionFieldConcatenationParserRuleCall_0; }
+	}
+
+	public class StatemachineOperationParameterMoreElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineOperationParameterMore");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineOperationParameterAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cCommaKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cSourceAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cSourceStatemachineActionFieldConcatenationParserRuleCall_2_0 = (RuleCall)cSourceAssignment_2.eContents().get(0);
+		
+		//StatemachineOperationParameterMore returns StatemachineOperationParameter:
+		//	{StatemachineOperationParameter} "," source=StatemachineActionFieldConcatenation;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineOperationParameter} "," source=StatemachineActionFieldConcatenation
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineOperationParameter}
+		public Action getStatemachineOperationParameterAction_0() { return cStatemachineOperationParameterAction_0; }
+
+		//","
+		public Keyword getCommaKeyword_1() { return cCommaKeyword_1; }
+
+		//source=StatemachineActionFieldConcatenation
+		public Assignment getSourceAssignment_2() { return cSourceAssignment_2; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getSourceStatemachineActionFieldConcatenationParserRuleCall_2_0() { return cSourceStatemachineActionFieldConcatenationParserRuleCall_2_0; }
+	}
+
+	public class StatemachineActionFieldSetElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldSet");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSetKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cSourceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cSourceStatemachineActionFieldConcatenationParserRuleCall_1_0 = (RuleCall)cSourceAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cAttributeStatemachineControlFieldAttributeCrossReference_3_0 = (CrossReference)cAttributeAssignment_3.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributeStatemachineControlFieldAttributeCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionFieldSet:
+		//	"set" source=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlFieldAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"set" source=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlFieldAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"set"
+		public Keyword getSetKeyword_0() { return cSetKeyword_0; }
+
+		//source=StatemachineActionFieldConcatenation
+		public Assignment getSourceAssignment_1() { return cSourceAssignment_1; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getSourceStatemachineActionFieldConcatenationParserRuleCall_1_0() { return cSourceStatemachineActionFieldConcatenationParserRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//attribute=[StatemachineControlFieldAttribute]
+		public Assignment getAttributeAssignment_3() { return cAttributeAssignment_3; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getAttributeStatemachineControlFieldAttributeCrossReference_3_0() { return cAttributeStatemachineControlFieldAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1() { return cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionFieldClearElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldClear");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cClearKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAttributeStatemachineControlFieldAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeStatemachineControlFieldAttributeCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionFieldClear:
+		//	"clear" attribute=[StatemachineControlFieldAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"clear" attribute=[StatemachineControlFieldAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"clear"
+		public Keyword getClearKeyword_0() { return cClearKeyword_0; }
+
+		//attribute=[StatemachineControlFieldAttribute]
+		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getAttributeStatemachineControlFieldAttributeCrossReference_1_0() { return cAttributeStatemachineControlFieldAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1() { return cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionFieldGetElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldGet");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cGetKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAttributeStatemachineControlFieldAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeStatemachineControlFieldAttributeCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionFieldGet:
+		//	"get" attribute=[StatemachineControlFieldAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"get" attribute=[StatemachineControlFieldAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"get"
+		public Keyword getGetKeyword_0() { return cGetKeyword_0; }
+
+		//attribute=[StatemachineControlFieldAttribute]
+		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getAttributeStatemachineControlFieldAttributeCrossReference_1_0() { return cAttributeStatemachineControlFieldAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1() { return cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionFieldRemoveElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionFieldRemove");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRemoveKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAttributeStatemachineControlFieldAttributeCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeStatemachineControlFieldAttributeCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionFieldRemove:
+		//	"remove" attribute=[StatemachineControlFieldAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"remove" attribute=[StatemachineControlFieldAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"remove"
+		public Keyword getRemoveKeyword_0() { return cRemoveKeyword_0; }
+
+		//attribute=[StatemachineControlFieldAttribute]
+		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }
+
+		//[StatemachineControlFieldAttribute]
+		public CrossReference getAttributeStatemachineControlFieldAttributeCrossReference_1_0() { return cAttributeStatemachineControlFieldAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1() { return cAttributeStatemachineControlFieldAttributeIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineControlVisibilityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlVisibility");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineControlFieldAttributeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineControlFieldLayoutParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineControlButtonAttributeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cStatemachineControlButtonParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//StatemachineControlVisibility:
+		//	StatemachineControlFieldAttribute | StatemachineControlFieldLayout | StatemachineControlButtonAttribute |
+		//	StatemachineControlButton;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineControlFieldAttribute | StatemachineControlFieldLayout | StatemachineControlButtonAttribute |
+		//StatemachineControlButton
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineControlFieldAttribute
+		public RuleCall getStatemachineControlFieldAttributeParserRuleCall_0() { return cStatemachineControlFieldAttributeParserRuleCall_0; }
+
+		//StatemachineControlFieldLayout
+		public RuleCall getStatemachineControlFieldLayoutParserRuleCall_1() { return cStatemachineControlFieldLayoutParserRuleCall_1; }
+
+		//StatemachineControlButtonAttribute
+		public RuleCall getStatemachineControlButtonAttributeParserRuleCall_2() { return cStatemachineControlButtonAttributeParserRuleCall_2; }
+
+		//StatemachineControlButton
+		public RuleCall getStatemachineControlButtonParserRuleCall_3() { return cStatemachineControlButtonParserRuleCall_3; }
+	}
+
+	public class StatemachineActionItemVisibleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionItemVisible");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cVisibleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAttributeStatemachineControlVisibilityCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeStatemachineControlVisibilityCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionItemVisible:
+		//	"visible" attribute=[StatemachineControlVisibility];
+		public ParserRule getRule() { return rule; }
+
+		//"visible" attribute=[StatemachineControlVisibility]
+		public Group getGroup() { return cGroup; }
+
+		//"visible"
+		public Keyword getVisibleKeyword_0() { return cVisibleKeyword_0; }
+
+		//attribute=[StatemachineControlVisibility]
+		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }
+
+		//[StatemachineControlVisibility]
+		public CrossReference getAttributeStatemachineControlVisibilityCrossReference_1_0() { return cAttributeStatemachineControlVisibilityCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1() { return cAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionItemInvisibleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionItemInvisible");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cInvisibleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAttributeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAttributeStatemachineControlVisibilityCrossReference_1_0 = (CrossReference)cAttributeAssignment_1.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1 = (RuleCall)cAttributeStatemachineControlVisibilityCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionItemInvisible:
+		//	"invisible" attribute=[StatemachineControlVisibility];
+		public ParserRule getRule() { return rule; }
+
+		//"invisible" attribute=[StatemachineControlVisibility]
+		public Group getGroup() { return cGroup; }
+
+		//"invisible"
+		public Keyword getInvisibleKeyword_0() { return cInvisibleKeyword_0; }
+
+		//attribute=[StatemachineControlVisibility]
+		public Assignment getAttributeAssignment_1() { return cAttributeAssignment_1; }
+
+		//[StatemachineControlVisibility]
+		public CrossReference getAttributeStatemachineControlVisibilityCrossReference_1_0() { return cAttributeStatemachineControlVisibilityCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1() { return cAttributeStatemachineControlVisibilityIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineActionButtonCaptionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionButtonCaption");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCaptionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cCaptionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cCaptionStatemachineActionFieldConcatenationParserRuleCall_1_0 = (RuleCall)cCaptionAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cAttributeStatemachineControlButtonAttributeCrossReference_3_0 = (CrossReference)cAttributeAssignment_3.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributeStatemachineControlButtonAttributeCrossReference_3_0.eContents().get(1);
+		
+		//// buttons
+		//StatemachineActionButtonCaption:
+		//	"caption" caption=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlButtonAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"caption" caption=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlButtonAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"caption"
+		public Keyword getCaptionKeyword_0() { return cCaptionKeyword_0; }
+
+		//caption=StatemachineActionFieldConcatenation
+		public Assignment getCaptionAssignment_1() { return cCaptionAssignment_1; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getCaptionStatemachineActionFieldConcatenationParserRuleCall_1_0() { return cCaptionStatemachineActionFieldConcatenationParserRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//attribute=[StatemachineControlButtonAttribute]
+		public Assignment getAttributeAssignment_3() { return cAttributeAssignment_3; }
+
+		//[StatemachineControlButtonAttribute]
+		public CrossReference getAttributeStatemachineControlButtonAttributeCrossReference_3_0() { return cAttributeStatemachineControlButtonAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1() { return cAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionButtonImageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionButtonImage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cImageKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cImageAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImageSTRINGTerminalRuleCall_1_0 = (RuleCall)cImageAssignment_1.eContents().get(0);
+		private final Keyword cCommercialAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cAttributeStatemachineControlButtonAttributeCrossReference_3_0 = (CrossReference)cAttributeAssignment_3.eContents().get(0);
+		private final RuleCall cAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cAttributeStatemachineControlButtonAttributeCrossReference_3_0.eContents().get(1);
+		
+		//StatemachineActionButtonImage:
+		//	"image" image=STRING "@" attribute=[StatemachineControlButtonAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"image" image=STRING "@" attribute=[StatemachineControlButtonAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"image"
+		public Keyword getImageKeyword_0() { return cImageKeyword_0; }
+
+		//image=STRING
+		public Assignment getImageAssignment_1() { return cImageAssignment_1; }
+
+		//STRING
+		public RuleCall getImageSTRINGTerminalRuleCall_1_0() { return cImageSTRINGTerminalRuleCall_1_0; }
+
+		//"@"
+		public Keyword getCommercialAtKeyword_2() { return cCommercialAtKeyword_2; }
+
+		//attribute=[StatemachineControlButtonAttribute]
+		public Assignment getAttributeAssignment_3() { return cAttributeAssignment_3; }
+
+		//[StatemachineControlButtonAttribute]
+		public CrossReference getAttributeStatemachineControlButtonAttributeCrossReference_3_0() { return cAttributeStatemachineControlButtonAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1() { return cAttributeStatemachineControlButtonAttributeIDTerminalRuleCall_3_0_1; }
+	}
+
+	public class StatemachineActionDTOFindElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionDTOFind");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSearchKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cSearchAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cSearchStatemachineActionFieldConcatenationParserRuleCall_1_0 = (RuleCall)cSearchAssignment_1.eContents().get(0);
+		private final Keyword cInKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDtoAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDtoStatemachineControlDTOAttributeCrossReference_3_0 = (CrossReference)cDtoAssignment_3.eContents().get(0);
+		private final RuleCall cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1 = (RuleCall)cDtoStatemachineControlDTOAttributeCrossReference_3_0.eContents().get(1);
+		private final Keyword cFullStopKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cAttributeAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cAttributeLDtoInheritedAttributeCrossReference_5_0 = (CrossReference)cAttributeAssignment_5.eContents().get(0);
+		private final RuleCall cAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1 = (RuleCall)cAttributeLDtoInheritedAttributeCrossReference_5_0.eContents().get(1);
+		
+		//// dto
+		//StatemachineActionDTOFind:
+		//	"search" search=StatemachineActionFieldConcatenation "in" dto=[StatemachineControlDTOAttribute] "."
+		//	attribute=[dto::LDtoInheritedAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"search" search=StatemachineActionFieldConcatenation "in" dto=[StatemachineControlDTOAttribute] "."
+		//attribute=[dto::LDtoInheritedAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"search"
+		public Keyword getSearchKeyword_0() { return cSearchKeyword_0; }
+
+		//search=StatemachineActionFieldConcatenation
+		public Assignment getSearchAssignment_1() { return cSearchAssignment_1; }
+
+		//StatemachineActionFieldConcatenation
+		public RuleCall getSearchStatemachineActionFieldConcatenationParserRuleCall_1_0() { return cSearchStatemachineActionFieldConcatenationParserRuleCall_1_0; }
+
+		//"in"
+		public Keyword getInKeyword_2() { return cInKeyword_2; }
+
+		//dto=[StatemachineControlDTOAttribute]
+		public Assignment getDtoAssignment_3() { return cDtoAssignment_3; }
+
+		//[StatemachineControlDTOAttribute]
+		public CrossReference getDtoStatemachineControlDTOAttributeCrossReference_3_0() { return cDtoStatemachineControlDTOAttributeCrossReference_3_0; }
+
+		//ID
+		public RuleCall getDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1() { return cDtoStatemachineControlDTOAttributeIDTerminalRuleCall_3_0_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_4() { return cFullStopKeyword_4; }
+
+		//attribute=[dto::LDtoInheritedAttribute]
+		public Assignment getAttributeAssignment_5() { return cAttributeAssignment_5; }
+
+		//[dto::LDtoInheritedAttribute]
+		public CrossReference getAttributeLDtoInheritedAttributeCrossReference_5_0() { return cAttributeLDtoInheritedAttributeCrossReference_5_0; }
+
+		//ID
+		public RuleCall getAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1() { return cAttributeLDtoInheritedAttributeIDTerminalRuleCall_5_0_1; }
+	}
+
+	public class StatemachineActionSchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineActionScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cScheduleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cSchedulerAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cSchedulerStatemachineControlSchedulerAttributeCrossReference_1_0 = (CrossReference)cSchedulerAssignment_1.eContents().get(0);
+		private final RuleCall cSchedulerStatemachineControlSchedulerAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cSchedulerStatemachineControlSchedulerAttributeCrossReference_1_0.eContents().get(1);
+		
+		//StatemachineActionScheduler:
+		//	"schedule" scheduler=[StatemachineControlSchedulerAttribute];
+		public ParserRule getRule() { return rule; }
+
+		//"schedule" scheduler=[StatemachineControlSchedulerAttribute]
+		public Group getGroup() { return cGroup; }
+
+		//"schedule"
+		public Keyword getScheduleKeyword_0() { return cScheduleKeyword_0; }
+
+		//scheduler=[StatemachineControlSchedulerAttribute]
+		public Assignment getSchedulerAssignment_1() { return cSchedulerAssignment_1; }
+
+		//[StatemachineControlSchedulerAttribute]
+		public CrossReference getSchedulerStatemachineControlSchedulerAttributeCrossReference_1_0() { return cSchedulerStatemachineControlSchedulerAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getSchedulerStatemachineControlSchedulerAttributeIDTerminalRuleCall_1_0_1() { return cSchedulerStatemachineControlSchedulerAttributeIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class StatemachineControlElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControl");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineControlButtonParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineControlFieldParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineControlDTOParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cStatemachineControlSchedulerParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cStatemachineControlPeripheralParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		
+		//StatemachineControl:
+		//	StatemachineControlButton | StatemachineControlField | StatemachineControlDTO | StatemachineControlScheduler |
+		//	StatemachineControlPeripheral;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineControlButton | StatemachineControlField | StatemachineControlDTO | StatemachineControlScheduler |
+		//StatemachineControlPeripheral
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineControlButton
+		public RuleCall getStatemachineControlButtonParserRuleCall_0() { return cStatemachineControlButtonParserRuleCall_0; }
+
+		//StatemachineControlField
+		public RuleCall getStatemachineControlFieldParserRuleCall_1() { return cStatemachineControlFieldParserRuleCall_1; }
+
+		//StatemachineControlDTO
+		public RuleCall getStatemachineControlDTOParserRuleCall_2() { return cStatemachineControlDTOParserRuleCall_2; }
+
+		//StatemachineControlScheduler
+		public RuleCall getStatemachineControlSchedulerParserRuleCall_3() { return cStatemachineControlSchedulerParserRuleCall_3; }
+
+		//StatemachineControlPeripheral
+		public RuleCall getStatemachineControlPeripheralParserRuleCall_4() { return cStatemachineControlPeripheralParserRuleCall_4; }
+	}
+
+	public class StatemachineControlButtonElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButton");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cKeypadKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cEventKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cEventTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cEventTypeStatemachineControlButtonEventTypeEnumRuleCall_3_0 = (RuleCall)cEventTypeAssignment_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cButtonsAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cButtonsStatemachineControlButtonAttributeParserRuleCall_5_0 = (RuleCall)cButtonsAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//StatemachineControlButton:
+		//	"keypad" name=ID "event" eventType=StatemachineControlButtonEventType "{"
+		//	buttons+=StatemachineControlButtonAttribute* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"keypad" name=ID "event" eventType=StatemachineControlButtonEventType "{" buttons+=StatemachineControlButtonAttribute*
+		//"}"
+		public Group getGroup() { return cGroup; }
+
+		//"keypad"
+		public Keyword getKeypadKeyword_0() { return cKeypadKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"event"
+		public Keyword getEventKeyword_2() { return cEventKeyword_2; }
+
+		//eventType=StatemachineControlButtonEventType
+		public Assignment getEventTypeAssignment_3() { return cEventTypeAssignment_3; }
+
+		//StatemachineControlButtonEventType
+		public RuleCall getEventTypeStatemachineControlButtonEventTypeEnumRuleCall_3_0() { return cEventTypeStatemachineControlButtonEventTypeEnumRuleCall_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
+
+		//buttons+=StatemachineControlButtonAttribute*
+		public Assignment getButtonsAssignment_5() { return cButtonsAssignment_5; }
+
+		//StatemachineControlButtonAttribute
+		public RuleCall getButtonsStatemachineControlButtonAttributeParserRuleCall_5_0() { return cButtonsStatemachineControlButtonAttributeParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class StatemachineControlFieldElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlField");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFieldsKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
+		private final Assignment cFieldsAssignment_3_0 = (Assignment)cUnorderedGroup_3.eContents().get(0);
+		private final RuleCall cFieldsStatemachineControlFieldAttributeParserRuleCall_3_0_0 = (RuleCall)cFieldsAssignment_3_0.eContents().get(0);
+		private final Assignment cLayoutsAssignment_3_1 = (Assignment)cUnorderedGroup_3.eContents().get(1);
+		private final RuleCall cLayoutsStatemachineControlFieldLayoutParserRuleCall_3_1_0 = (RuleCall)cLayoutsAssignment_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//StatemachineControlField:
+		//	"fields" name=ID "{" (fields+=StatemachineControlFieldAttribute* & layouts+=StatemachineControlFieldLayout*) "}";
+		public ParserRule getRule() { return rule; }
+
+		//"fields" name=ID "{" (fields+=StatemachineControlFieldAttribute* & layouts+=StatemachineControlFieldLayout*) "}"
+		public Group getGroup() { return cGroup; }
+
+		//"fields"
+		public Keyword getFieldsKeyword_0() { return cFieldsKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//fields+=StatemachineControlFieldAttribute* & layouts+=StatemachineControlFieldLayout*
+		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
+
+		//fields+=StatemachineControlFieldAttribute*
+		public Assignment getFieldsAssignment_3_0() { return cFieldsAssignment_3_0; }
+
+		//StatemachineControlFieldAttribute
+		public RuleCall getFieldsStatemachineControlFieldAttributeParserRuleCall_3_0_0() { return cFieldsStatemachineControlFieldAttributeParserRuleCall_3_0_0; }
+
+		//layouts+=StatemachineControlFieldLayout*
+		public Assignment getLayoutsAssignment_3_1() { return cLayoutsAssignment_3_1; }
+
+		//StatemachineControlFieldLayout
+		public RuleCall getLayoutsStatemachineControlFieldLayoutParserRuleCall_3_1_0() { return cLayoutsStatemachineControlFieldLayoutParserRuleCall_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class StatemachineControlDTOElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlDTO");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDataProviderKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDtosAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDtosStatemachineControlDTOAttributeParserRuleCall_3_0 = (RuleCall)cDtosAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//StatemachineControlDTO:
+		//	"dataProvider" name=ID "{" dtos+=StatemachineControlDTOAttribute* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"dataProvider" name=ID "{" dtos+=StatemachineControlDTOAttribute* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"dataProvider"
+		public Keyword getDataProviderKeyword_0() { return cDataProviderKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//dtos+=StatemachineControlDTOAttribute*
+		public Assignment getDtosAssignment_3() { return cDtosAssignment_3; }
+
+		//StatemachineControlDTOAttribute
+		public RuleCall getDtosStatemachineControlDTOAttributeParserRuleCall_3_0() { return cDtosStatemachineControlDTOAttributeParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class StatemachineControlSchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSchedulerKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cSchedulersAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cSchedulersStatemachineControlSchedulerAttributeParserRuleCall_3_0 = (RuleCall)cSchedulersAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//StatemachineControlScheduler:
+		//	"scheduler" name=ID "{" schedulers+=StatemachineControlSchedulerAttribute* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"scheduler" name=ID "{" schedulers+=StatemachineControlSchedulerAttribute* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"scheduler"
+		public Keyword getSchedulerKeyword_0() { return cSchedulerKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//schedulers+=StatemachineControlSchedulerAttribute*
+		public Assignment getSchedulersAssignment_3() { return cSchedulersAssignment_3; }
+
+		//StatemachineControlSchedulerAttribute
+		public RuleCall getSchedulersStatemachineControlSchedulerAttributeParserRuleCall_3_0() { return cSchedulersStatemachineControlSchedulerAttributeParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class StatemachinePeripheralDeviceLineDisplayElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePeripheralDeviceLineDisplay");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLineDisplayKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachinePeripheralDeviceLineDisplay:
+		//	"lineDisplay" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"lineDisplay" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"lineDisplay"
+		public Keyword getLineDisplayKeyword_0() { return cLineDisplayKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachinePeripheralDevicePOSPrinterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePeripheralDevicePOSPrinter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPosPrinterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachinePeripheralDevicePOSPrinter:
+		//	"posPrinter" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"posPrinter" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"posPrinter"
+		public Keyword getPosPrinterKeyword_0() { return cPosPrinterKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachinePeripheralDeviceCashDrawerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePeripheralDeviceCashDrawer");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCashDrawerKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachinePeripheralDeviceCashDrawer:
+		//	"cashDrawer" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"cashDrawer" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"cashDrawer"
+		public Keyword getCashDrawerKeyword_0() { return cCashDrawerKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachinePeripheralDevicePTElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePeripheralDevicePT");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPaymentKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachinePeripheralDevicePT:
+		//	"payment" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"payment" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"payment"
+		public Keyword getPaymentKeyword_0() { return cPaymentKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachineControlPeripheralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlPeripheral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPeripheralKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cLineDisplaysAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cLineDisplaysStatemachinePeripheralDeviceLineDisplayParserRuleCall_3_0 = (RuleCall)cLineDisplaysAssignment_3.eContents().get(0);
+		private final Assignment cPosPrintersAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cPosPrintersStatemachinePeripheralDevicePOSPrinterParserRuleCall_4_0 = (RuleCall)cPosPrintersAssignment_4.eContents().get(0);
+		private final Assignment cCashDrawersAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cCashDrawersStatemachinePeripheralDeviceCashDrawerParserRuleCall_5_0 = (RuleCall)cCashDrawersAssignment_5.eContents().get(0);
+		private final Assignment cPaymentTerminalsAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cPaymentTerminalsStatemachinePeripheralDevicePTParserRuleCall_6_0 = (RuleCall)cPaymentTerminalsAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//StatemachineControlPeripheral:
+		//	"peripheral" name=ID "{" lineDisplays+=StatemachinePeripheralDeviceLineDisplay*
+		//	posPrinters+=StatemachinePeripheralDevicePOSPrinter* cashDrawers+=StatemachinePeripheralDeviceCashDrawer*
+		//	paymentTerminals+=StatemachinePeripheralDevicePT* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"peripheral" name=ID "{" lineDisplays+=StatemachinePeripheralDeviceLineDisplay*
+		//posPrinters+=StatemachinePeripheralDevicePOSPrinter* cashDrawers+=StatemachinePeripheralDeviceCashDrawer*
+		//paymentTerminals+=StatemachinePeripheralDevicePT* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"peripheral"
+		public Keyword getPeripheralKeyword_0() { return cPeripheralKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//lineDisplays+=StatemachinePeripheralDeviceLineDisplay*
+		public Assignment getLineDisplaysAssignment_3() { return cLineDisplaysAssignment_3; }
+
+		//StatemachinePeripheralDeviceLineDisplay
+		public RuleCall getLineDisplaysStatemachinePeripheralDeviceLineDisplayParserRuleCall_3_0() { return cLineDisplaysStatemachinePeripheralDeviceLineDisplayParserRuleCall_3_0; }
+
+		//posPrinters+=StatemachinePeripheralDevicePOSPrinter*
+		public Assignment getPosPrintersAssignment_4() { return cPosPrintersAssignment_4; }
+
+		//StatemachinePeripheralDevicePOSPrinter
+		public RuleCall getPosPrintersStatemachinePeripheralDevicePOSPrinterParserRuleCall_4_0() { return cPosPrintersStatemachinePeripheralDevicePOSPrinterParserRuleCall_4_0; }
+
+		//cashDrawers+=StatemachinePeripheralDeviceCashDrawer*
+		public Assignment getCashDrawersAssignment_5() { return cCashDrawersAssignment_5; }
+
+		//StatemachinePeripheralDeviceCashDrawer
+		public RuleCall getCashDrawersStatemachinePeripheralDeviceCashDrawerParserRuleCall_5_0() { return cCashDrawersStatemachinePeripheralDeviceCashDrawerParserRuleCall_5_0; }
+
+		//paymentTerminals+=StatemachinePeripheralDevicePT*
+		public Assignment getPaymentTerminalsAssignment_6() { return cPaymentTerminalsAssignment_6; }
+
+		//StatemachinePeripheralDevicePT
+		public RuleCall getPaymentTerminalsStatemachinePeripheralDevicePTParserRuleCall_6_0() { return cPaymentTerminalsStatemachinePeripheralDevicePTParserRuleCall_6_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class StatemachineControlButtonAttributeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonAttribute");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cButtonKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cHasImageAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cHasImageImageKeyword_2_0_0 = (Keyword)cHasImageAssignment_2_0.eContents().get(0);
+		private final Assignment cImageAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cImageSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cImageAssignment_2_1.eContents().get(0);
+		private final Assignment cEventAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cEventStatemachineControlButtonAttributeEventParserRuleCall_3_0 = (RuleCall)cEventAssignment_3.eContents().get(0);
+		
+		//StatemachineControlButtonAttribute:
+		//	"button" name=TRANSLATABLEID (hasImage?="image" image=STRING)? event=StatemachineControlButtonAttributeEvent;
+		public ParserRule getRule() { return rule; }
+
+		//"button" name=TRANSLATABLEID (hasImage?="image" image=STRING)? event=StatemachineControlButtonAttributeEvent
+		public Group getGroup() { return cGroup; }
+
+		//"button"
+		public Keyword getButtonKeyword_0() { return cButtonKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//(hasImage?="image" image=STRING)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//hasImage?="image"
+		public Assignment getHasImageAssignment_2_0() { return cHasImageAssignment_2_0; }
+
+		//"image"
+		public Keyword getHasImageImageKeyword_2_0_0() { return cHasImageImageKeyword_2_0_0; }
+
+		//image=STRING
+		public Assignment getImageAssignment_2_1() { return cImageAssignment_2_1; }
+
+		//STRING
+		public RuleCall getImageSTRINGTerminalRuleCall_2_1_0() { return cImageSTRINGTerminalRuleCall_2_1_0; }
+
+		//event=StatemachineControlButtonAttributeEvent
+		public Assignment getEventAssignment_3() { return cEventAssignment_3; }
+
+		//StatemachineControlButtonAttributeEvent
+		public RuleCall getEventStatemachineControlButtonAttributeEventParserRuleCall_3_0() { return cEventStatemachineControlButtonAttributeEventParserRuleCall_3_0; }
+	}
+
+	public class StatemachineControlButtonAttributeEventElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonAttributeEvent");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStatemachineControlButtonAttributeEventIdentityParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStatemachineControlButtonAttributeEventEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//StatemachineControlButtonAttributeEvent:
+		//	StatemachineControlButtonAttributeEventKeyboard | StatemachineControlButtonAttributeEventIdentity |
+		//	StatemachineControlButtonAttributeEventEvent;
+		public ParserRule getRule() { return rule; }
+
+		//StatemachineControlButtonAttributeEventKeyboard | StatemachineControlButtonAttributeEventIdentity |
+		//StatemachineControlButtonAttributeEventEvent
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//StatemachineControlButtonAttributeEventKeyboard
+		public RuleCall getStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0() { return cStatemachineControlButtonAttributeEventKeyboardParserRuleCall_0; }
+
+		//StatemachineControlButtonAttributeEventIdentity
+		public RuleCall getStatemachineControlButtonAttributeEventIdentityParserRuleCall_1() { return cStatemachineControlButtonAttributeEventIdentityParserRuleCall_1; }
+
+		//StatemachineControlButtonAttributeEventEvent
+		public RuleCall getStatemachineControlButtonAttributeEventEventParserRuleCall_2() { return cStatemachineControlButtonAttributeEventEventParserRuleCall_2; }
+	}
+
+	public class StatemachineControlButtonAttributeEventKeyboardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonAttributeEventKeyboard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineControlButtonAttributeEventKeyboardAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cKeyKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cKeystrokeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cKeystrokeSTRINGTerminalRuleCall_2_0 = (RuleCall)cKeystrokeAssignment_2.eContents().get(0);
+		
+		//StatemachineControlButtonAttributeEventKeyboard:
+		//	{StatemachineControlButtonAttributeEventKeyboard} "key" keystroke=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineControlButtonAttributeEventKeyboard} "key" keystroke=STRING
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineControlButtonAttributeEventKeyboard}
+		public Action getStatemachineControlButtonAttributeEventKeyboardAction_0() { return cStatemachineControlButtonAttributeEventKeyboardAction_0; }
+
+		//"key"
+		public Keyword getKeyKeyword_1() { return cKeyKeyword_1; }
+
+		//keystroke=STRING
+		public Assignment getKeystrokeAssignment_2() { return cKeystrokeAssignment_2; }
+
+		//STRING
+		public RuleCall getKeystrokeSTRINGTerminalRuleCall_2_0() { return cKeystrokeSTRINGTerminalRuleCall_2_0; }
+	}
+
+	public class StatemachineControlButtonAttributeEventIdentityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonAttributeEventIdentity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineControlButtonAttributeEventIdentityAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIdKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cIdentityAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cIdentityINTTerminalRuleCall_2_0 = (RuleCall)cIdentityAssignment_2.eContents().get(0);
+		
+		//StatemachineControlButtonAttributeEventIdentity:
+		//	{StatemachineControlButtonAttributeEventIdentity} "id" identity=INT;
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineControlButtonAttributeEventIdentity} "id" identity=INT
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineControlButtonAttributeEventIdentity}
+		public Action getStatemachineControlButtonAttributeEventIdentityAction_0() { return cStatemachineControlButtonAttributeEventIdentityAction_0; }
+
+		//"id"
+		public Keyword getIdKeyword_1() { return cIdKeyword_1; }
+
+		//identity=INT
+		public Assignment getIdentityAssignment_2() { return cIdentityAssignment_2; }
+
+		//INT
+		public RuleCall getIdentityINTTerminalRuleCall_2_0() { return cIdentityINTTerminalRuleCall_2_0; }
+	}
+
+	public class StatemachineControlButtonAttributeEventEventElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonAttributeEventEvent");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStatemachineControlButtonAttributeEventEventAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cEventKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cEventAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cEventStatemachineEventCrossReference_2_0 = (CrossReference)cEventAssignment_2.eContents().get(0);
+		private final RuleCall cEventStatemachineEventIDTerminalRuleCall_2_0_1 = (RuleCall)cEventStatemachineEventCrossReference_2_0.eContents().get(1);
+		
+		//StatemachineControlButtonAttributeEventEvent:
+		//	{StatemachineControlButtonAttributeEventEvent} "event" event=[StatemachineEvent];
+		public ParserRule getRule() { return rule; }
+
+		//{StatemachineControlButtonAttributeEventEvent} "event" event=[StatemachineEvent]
+		public Group getGroup() { return cGroup; }
+
+		//{StatemachineControlButtonAttributeEventEvent}
+		public Action getStatemachineControlButtonAttributeEventEventAction_0() { return cStatemachineControlButtonAttributeEventEventAction_0; }
+
+		//"event"
+		public Keyword getEventKeyword_1() { return cEventKeyword_1; }
+
+		//event=[StatemachineEvent]
+		public Assignment getEventAssignment_2() { return cEventAssignment_2; }
+
+		//[StatemachineEvent]
+		public CrossReference getEventStatemachineEventCrossReference_2_0() { return cEventStatemachineEventCrossReference_2_0; }
+
+		//ID
+		public RuleCall getEventStatemachineEventIDTerminalRuleCall_2_0_1() { return cEventStatemachineEventIDTerminalRuleCall_2_0_1; }
+	}
+
+	public class StatemachineControlFieldAttributeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlFieldAttribute");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFieldKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cAttributeTypeStatemachineFieldTypeParserRuleCall_3_0 = (RuleCall)cAttributeTypeAssignment_3.eContents().get(0);
+		
+		//StatemachineControlFieldAttribute:
+		//	"field" name=TRANSLATABLEID "type" attributeType=StatemachineFieldType;
+		public ParserRule getRule() { return rule; }
+
+		//"field" name=TRANSLATABLEID "type" attributeType=StatemachineFieldType
+		public Group getGroup() { return cGroup; }
+
+		//"field"
+		public Keyword getFieldKeyword_0() { return cFieldKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//"type"
+		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
+
+		//attributeType=StatemachineFieldType
+		public Assignment getAttributeTypeAssignment_3() { return cAttributeTypeAssignment_3; }
+
+		//StatemachineFieldType
+		public RuleCall getAttributeTypeStatemachineFieldTypeParserRuleCall_3_0() { return cAttributeTypeStatemachineFieldTypeParserRuleCall_3_0; }
+	}
+
+	public class StatemachineControlFieldLayoutElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlFieldLayout");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLayoutKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		//StatemachineControlFieldLayout:
+		//	"layout" name=ID;
+		public ParserRule getRule() { return rule; }
+
+		//"layout" name=ID
+		public Group getGroup() { return cGroup; }
+
+		//"layout"
+		public Keyword getLayoutKeyword_0() { return cLayoutKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+	}
+
+	public class StatemachineControlDTOAttributeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlDTOAttribute");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDtoKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cAttributeTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cAttributeTypeStatemachineDTOTypeParserRuleCall_3_0 = (RuleCall)cAttributeTypeAssignment_3.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Assignment cHasEventAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
+		private final Keyword cHasEventEventKeyword_4_0_0 = (Keyword)cHasEventAssignment_4_0.eContents().get(0);
+		private final Assignment cEventAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cEventStatemachineEventCrossReference_4_1_0 = (CrossReference)cEventAssignment_4_1.eContents().get(0);
+		private final RuleCall cEventStatemachineEventIDTerminalRuleCall_4_1_0_1 = (RuleCall)cEventStatemachineEventCrossReference_4_1_0.eContents().get(1);
+		
+		//StatemachineControlDTOAttribute:
+		//	"dto" name=ID "type" attributeType=StatemachineDTOType (hasEvent?="event" event=[StatemachineEvent])?;
+		public ParserRule getRule() { return rule; }
+
+		//"dto" name=ID "type" attributeType=StatemachineDTOType (hasEvent?="event" event=[StatemachineEvent])?
+		public Group getGroup() { return cGroup; }
+
+		//"dto"
+		public Keyword getDtoKeyword_0() { return cDtoKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"type"
+		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
+
+		//attributeType=StatemachineDTOType
+		public Assignment getAttributeTypeAssignment_3() { return cAttributeTypeAssignment_3; }
+
+		//StatemachineDTOType
+		public RuleCall getAttributeTypeStatemachineDTOTypeParserRuleCall_3_0() { return cAttributeTypeStatemachineDTOTypeParserRuleCall_3_0; }
+
+		//(hasEvent?="event" event=[StatemachineEvent])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//hasEvent?="event"
+		public Assignment getHasEventAssignment_4_0() { return cHasEventAssignment_4_0; }
+
+		//"event"
+		public Keyword getHasEventEventKeyword_4_0_0() { return cHasEventEventKeyword_4_0_0; }
+
+		//event=[StatemachineEvent]
+		public Assignment getEventAssignment_4_1() { return cEventAssignment_4_1; }
+
+		//[StatemachineEvent]
+		public CrossReference getEventStatemachineEventCrossReference_4_1_0() { return cEventStatemachineEventCrossReference_4_1_0; }
+
+		//ID
+		public RuleCall getEventStatemachineEventIDTerminalRuleCall_4_1_0_1() { return cEventStatemachineEventIDTerminalRuleCall_4_1_0_1; }
+	}
+
+	public class StatemachineControlSchedulerAttributeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlSchedulerAttribute");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSchedulerKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cDelayKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDelayAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDelayINTTerminalRuleCall_3_0 = (RuleCall)cDelayAssignment_3.eContents().get(0);
+		private final Keyword cSendKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cEventAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cEventStatemachineEventCrossReference_5_0 = (CrossReference)cEventAssignment_5.eContents().get(0);
+		private final RuleCall cEventStatemachineEventIDTerminalRuleCall_5_0_1 = (RuleCall)cEventStatemachineEventCrossReference_5_0.eContents().get(1);
+		
+		//StatemachineControlSchedulerAttribute:
+		//	"scheduler" name=ID "delay" delay=INT "send" event=[StatemachineEvent];
+		public ParserRule getRule() { return rule; }
+
+		//"scheduler" name=ID "delay" delay=INT "send" event=[StatemachineEvent]
+		public Group getGroup() { return cGroup; }
+
+		//"scheduler"
+		public Keyword getSchedulerKeyword_0() { return cSchedulerKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"delay"
+		public Keyword getDelayKeyword_2() { return cDelayKeyword_2; }
+
+		//delay=INT
+		public Assignment getDelayAssignment_3() { return cDelayAssignment_3; }
+
+		//INT
+		public RuleCall getDelayINTTerminalRuleCall_3_0() { return cDelayINTTerminalRuleCall_3_0; }
+
+		//"send"
+		public Keyword getSendKeyword_4() { return cSendKeyword_4; }
+
+		//event=[StatemachineEvent]
+		public Assignment getEventAssignment_5() { return cEventAssignment_5; }
+
+		//[StatemachineEvent]
+		public CrossReference getEventStatemachineEventCrossReference_5_0() { return cEventStatemachineEventCrossReference_5_0; }
+
+		//ID
+		public RuleCall getEventStatemachineEventIDTerminalRuleCall_5_0_1() { return cEventStatemachineEventIDTerminalRuleCall_5_0_1; }
+	}
+
+	public class StatemachineDTOTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineDTOType");
+		private final Assignment cAttributeTypeAssignment = (Assignment)rule.eContents().get(1);
+		private final CrossReference cAttributeTypeLDtoCrossReference_0 = (CrossReference)cAttributeTypeAssignment.eContents().get(0);
+		private final RuleCall cAttributeTypeLDtoIDTerminalRuleCall_0_1 = (RuleCall)cAttributeTypeLDtoCrossReference_0.eContents().get(1);
+		
+		//StatemachineDTOType:
+		//	attributeType=[dto::LDto];
+		public ParserRule getRule() { return rule; }
+
+		//attributeType=[dto::LDto]
+		public Assignment getAttributeTypeAssignment() { return cAttributeTypeAssignment; }
+
+		//[dto::LDto]
+		public CrossReference getAttributeTypeLDtoCrossReference_0() { return cAttributeTypeLDtoCrossReference_0; }
+
+		//ID
+		public RuleCall getAttributeTypeLDtoIDTerminalRuleCall_0_1() { return cAttributeTypeLDtoIDTerminalRuleCall_0_1; }
+	}
+
+	public class StatemachineFieldTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineFieldType");
+		private final Assignment cAttributeTypeAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cAttributeTypeStatemachineInternalTypeEnumRuleCall_0 = (RuleCall)cAttributeTypeAssignment.eContents().get(0);
+		
+		//StatemachineFieldType:
+		//	attributeType=StatemachineInternalType;
+		public ParserRule getRule() { return rule; }
+
+		//attributeType=StatemachineInternalType
+		public Assignment getAttributeTypeAssignment() { return cAttributeTypeAssignment; }
+
+		//StatemachineInternalType
+		public RuleCall getAttributeTypeStatemachineInternalTypeEnumRuleCall_0() { return cAttributeTypeStatemachineInternalTypeEnumRuleCall_0; }
+	}
+
+	public class StatemachineImportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineImport");
+		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 cImportedNamespaceStatemachineQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+		
+		//StatemachineImport returns types::LImport:
+		//	"import" importedNamespace=StatemachineQualifiedNameWithWildCard;
+		public ParserRule getRule() { return rule; }
+
+		//"import" importedNamespace=StatemachineQualifiedNameWithWildCard
+		public Group getGroup() { return cGroup; }
+
+		//"import"
+		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+		//importedNamespace=StatemachineQualifiedNameWithWildCard
+		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+		//StatemachineQualifiedNameWithWildCard
+		public RuleCall getImportedNamespaceStatemachineQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceStatemachineQualifiedNameWithWildCardParserRuleCall_1_0; }
+	}
+
+	public class StatemachineQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineQualifiedNameWithWildCard");
+		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);
+		
+		//StatemachineQualifiedNameWithWildCard:
+		//	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 QualifiedNameElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cValidIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cValidIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//QualifiedName:
+		//	ValidID ("." ValidID)*;
+		public ParserRule getRule() { return rule; }
+
+		//ValidID ("." ValidID)*
+		public Group getGroup() { return cGroup; }
+
+		//ValidID
+		public RuleCall getValidIDParserRuleCall_0() { return cValidIDParserRuleCall_0; }
+
+		//(=> "." ValidID)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//=> "."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ValidID
+		public RuleCall getValidIDParserRuleCall_1_1() { return cValidIDParserRuleCall_1_1; }
+	}
+
+	public class ValidIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidID");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//ValidID:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+
+	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 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 cUnsignedNumberParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//SignedNumber returns ecore::EDouble:
+		//	"-"? UnsignedNumber;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? UnsignedNumber
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//UnsignedNumber
+		public RuleCall getUnsignedNumberParserRuleCall_1() { return cUnsignedNumberParserRuleCall_1; }
+	}
+
+	public class UnsignedNumberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UnsignedNumber");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//UnsignedNumber returns ecore::EDouble:
+		//	INT ("." INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//INT ("." INT)?
+		public Group getGroup() { return cGroup; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }
+
+		//("." INT)?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1_1() { return cINTTerminalRuleCall_1_1; }
+	}
+	
+	
+	public class StatemachineInternalTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineInternalType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cBOOLEANEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cBOOLEANBooleanKeyword_0_0 = (Keyword)cBOOLEANEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cINTEGEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cINTEGERIntegerKeyword_1_0 = (Keyword)cINTEGEREnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cLONGEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cLONGLongKeyword_2_0 = (Keyword)cLONGEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDOUBLEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDOUBLEDoubleKeyword_3_0 = (Keyword)cDOUBLEEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cSTRINGStringKeyword_4_0 = (Keyword)cSTRINGEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cDATEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cDATEDateKeyword_5_0 = (Keyword)cDATEEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cSUGGESTTEXTEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cSUGGESTTEXTSuggestTextKeyword_6_0 = (Keyword)cSUGGESTTEXTEnumLiteralDeclaration_6.eContents().get(0);
+		
+		//enum StatemachineInternalType:
+		//	BOOLEAN="Boolean" | INTEGER="Integer" | LONG="Long" | DOUBLE="Double" | STRING="String" | DATE="Date" |
+		//	SUGGESTTEXT="SuggestText";
+		public EnumRule getRule() { return rule; }
+
+		//BOOLEAN="Boolean" | INTEGER="Integer" | LONG="Long" | DOUBLE="Double" | STRING="String" | DATE="Date" |
+		//SUGGESTTEXT="SuggestText"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//BOOLEAN="Boolean"
+		public EnumLiteralDeclaration getBOOLEANEnumLiteralDeclaration_0() { return cBOOLEANEnumLiteralDeclaration_0; }
+
+		//"Boolean"
+		public Keyword getBOOLEANBooleanKeyword_0_0() { return cBOOLEANBooleanKeyword_0_0; }
+
+		//INTEGER="Integer"
+		public EnumLiteralDeclaration getINTEGEREnumLiteralDeclaration_1() { return cINTEGEREnumLiteralDeclaration_1; }
+
+		//"Integer"
+		public Keyword getINTEGERIntegerKeyword_1_0() { return cINTEGERIntegerKeyword_1_0; }
+
+		//LONG="Long"
+		public EnumLiteralDeclaration getLONGEnumLiteralDeclaration_2() { return cLONGEnumLiteralDeclaration_2; }
+
+		//"Long"
+		public Keyword getLONGLongKeyword_2_0() { return cLONGLongKeyword_2_0; }
+
+		//DOUBLE="Double"
+		public EnumLiteralDeclaration getDOUBLEEnumLiteralDeclaration_3() { return cDOUBLEEnumLiteralDeclaration_3; }
+
+		//"Double"
+		public Keyword getDOUBLEDoubleKeyword_3_0() { return cDOUBLEDoubleKeyword_3_0; }
+
+		//STRING="String"
+		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_4() { return cSTRINGEnumLiteralDeclaration_4; }
+
+		//"String"
+		public Keyword getSTRINGStringKeyword_4_0() { return cSTRINGStringKeyword_4_0; }
+
+		//DATE="Date"
+		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_5() { return cDATEEnumLiteralDeclaration_5; }
+
+		//"Date"
+		public Keyword getDATEDateKeyword_5_0() { return cDATEDateKeyword_5_0; }
+
+		//SUGGESTTEXT="SuggestText"
+		public EnumLiteralDeclaration getSUGGESTTEXTEnumLiteralDeclaration_6() { return cSUGGESTTEXTEnumLiteralDeclaration_6; }
+
+		//"SuggestText"
+		public Keyword getSUGGESTTEXTSuggestTextKeyword_6_0() { return cSUGGESTTEXTSuggestTextKeyword_6_0; }
+	}
+
+	public class StatemachineControlButtonEventTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineControlButtonEventType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cKEYBOARDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cKEYBOARDKeyboardKeyword_0_0 = (Keyword)cKEYBOARDEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cTRIGGEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cTRIGGERTriggerKeyword_1_0 = (Keyword)cTRIGGEREnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cIDENTITYEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cIDENTITYIdentityKeyword_2_0 = (Keyword)cIDENTITYEnumLiteralDeclaration_2.eContents().get(0);
+		
+		//enum StatemachineControlButtonEventType:
+		//	KEYBOARD="keyboard" | TRIGGER="trigger" | IDENTITY="identity";
+		public EnumRule getRule() { return rule; }
+
+		//KEYBOARD="keyboard" | TRIGGER="trigger" | IDENTITY="identity"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//KEYBOARD="keyboard"
+		public EnumLiteralDeclaration getKEYBOARDEnumLiteralDeclaration_0() { return cKEYBOARDEnumLiteralDeclaration_0; }
+
+		//"keyboard"
+		public Keyword getKEYBOARDKeyboardKeyword_0_0() { return cKEYBOARDKeyboardKeyword_0_0; }
+
+		//TRIGGER="trigger"
+		public EnumLiteralDeclaration getTRIGGEREnumLiteralDeclaration_1() { return cTRIGGEREnumLiteralDeclaration_1; }
+
+		//"trigger"
+		public Keyword getTRIGGERTriggerKeyword_1_0() { return cTRIGGERTriggerKeyword_1_0; }
+
+		//IDENTITY="identity"
+		public EnumLiteralDeclaration getIDENTITYEnumLiteralDeclaration_2() { return cIDENTITYEnumLiteralDeclaration_2; }
+
+		//"identity"
+		public Keyword getIDENTITYIdentityKeyword_2_0() { return cIDENTITYIdentityKeyword_2_0; }
+	}
+
+	public class StatemachineEvaluationTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineEvaluationType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cIP_ADDRESSEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cIP_ADDRESSGetIPAddressKeyword_0_0 = (Keyword)cIP_ADDRESSEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNOWEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNOWGetNowKeyword_1_0 = (Keyword)cNOWEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_AGENT_INFOEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cUSER_AGENT_INFOGetUserAgentInfoKeyword_2_0 = (Keyword)cUSER_AGENT_INFOEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cIS_TOUCH_DEVICEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cIS_TOUCH_DEVICEIsTouchDeviceKeyword_3_0 = (Keyword)cIS_TOUCH_DEVICEEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cIS_HTTPSEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cIS_HTTPSIsHttpsKeyword_4_0 = (Keyword)cIS_HTTPSEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cBROWSER_LOCALEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cBROWSER_LOCALEGetBrowserLocaleKeyword_5_0 = (Keyword)cBROWSER_LOCALEEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_NAMEEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cUSER_NAMEGetUserNameKeyword_6_0 = (Keyword)cUSER_NAMEEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_PASSWORDEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cUSER_PASSWORDGetUserPasswordKeyword_7_0 = (Keyword)cUSER_PASSWORDEnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_EMAILEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cUSER_EMAILGetUserEmailKeyword_8_0 = (Keyword)cUSER_EMAILEnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_POSITIONEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cUSER_POSITIONGetUserPositionKeyword_9_0 = (Keyword)cUSER_POSITIONEnumLiteralDeclaration_9.eContents().get(0);
+		private final EnumLiteralDeclaration cUSER_PRTSERVICEEnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+		private final Keyword cUSER_PRTSERVICEGetUserPrintServiceKeyword_10_0 = (Keyword)cUSER_PRTSERVICEEnumLiteralDeclaration_10.eContents().get(0);
+		private final EnumLiteralDeclaration cSCREEN_WIDTHEnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
+		private final Keyword cSCREEN_WIDTHGetSceenWidthKeyword_11_0 = (Keyword)cSCREEN_WIDTHEnumLiteralDeclaration_11.eContents().get(0);
+		private final EnumLiteralDeclaration cSCREEN_HEIGHTEnumLiteralDeclaration_12 = (EnumLiteralDeclaration)cAlternatives.eContents().get(12);
+		private final Keyword cSCREEN_HEIGHTGetScreenHeightKeyword_12_0 = (Keyword)cSCREEN_HEIGHTEnumLiteralDeclaration_12.eContents().get(0);
+		private final EnumLiteralDeclaration cTRIGGEREnumLiteralDeclaration_13 = (EnumLiteralDeclaration)cAlternatives.eContents().get(13);
+		private final Keyword cTRIGGERGetTriggerKeyword_13_0 = (Keyword)cTRIGGEREnumLiteralDeclaration_13.eContents().get(0);
+		
+		//enum StatemachineEvaluationType:
+		//	IP_ADDRESS="getIPAddress" | NOW="getNow" | USER_AGENT_INFO="getUserAgentInfo" | IS_TOUCH_DEVICE="isTouchDevice" |
+		//	IS_HTTPS="isHttps" | BROWSER_LOCALE="getBrowserLocale" | USER_NAME="getUserName" | USER_PASSWORD="getUserPassword" |
+		//	USER_EMAIL="getUserEmail" | USER_POSITION="getUserPosition" | USER_PRTSERVICE="getUserPrintService" |
+		//	SCREEN_WIDTH="getSceenWidth" | SCREEN_HEIGHT="getScreenHeight" | TRIGGER="getTrigger";
+		public EnumRule getRule() { return rule; }
+
+		//IP_ADDRESS="getIPAddress" | NOW="getNow" | USER_AGENT_INFO="getUserAgentInfo" | IS_TOUCH_DEVICE="isTouchDevice" |
+		//IS_HTTPS="isHttps" | BROWSER_LOCALE="getBrowserLocale" | USER_NAME="getUserName" | USER_PASSWORD="getUserPassword" |
+		//USER_EMAIL="getUserEmail" | USER_POSITION="getUserPosition" | USER_PRTSERVICE="getUserPrintService" |
+		//SCREEN_WIDTH="getSceenWidth" | SCREEN_HEIGHT="getScreenHeight" | TRIGGER="getTrigger"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//IP_ADDRESS="getIPAddress"
+		public EnumLiteralDeclaration getIP_ADDRESSEnumLiteralDeclaration_0() { return cIP_ADDRESSEnumLiteralDeclaration_0; }
+
+		//"getIPAddress"
+		public Keyword getIP_ADDRESSGetIPAddressKeyword_0_0() { return cIP_ADDRESSGetIPAddressKeyword_0_0; }
+
+		//NOW="getNow"
+		public EnumLiteralDeclaration getNOWEnumLiteralDeclaration_1() { return cNOWEnumLiteralDeclaration_1; }
+
+		//"getNow"
+		public Keyword getNOWGetNowKeyword_1_0() { return cNOWGetNowKeyword_1_0; }
+
+		//USER_AGENT_INFO="getUserAgentInfo"
+		public EnumLiteralDeclaration getUSER_AGENT_INFOEnumLiteralDeclaration_2() { return cUSER_AGENT_INFOEnumLiteralDeclaration_2; }
+
+		//"getUserAgentInfo"
+		public Keyword getUSER_AGENT_INFOGetUserAgentInfoKeyword_2_0() { return cUSER_AGENT_INFOGetUserAgentInfoKeyword_2_0; }
+
+		//IS_TOUCH_DEVICE="isTouchDevice"
+		public EnumLiteralDeclaration getIS_TOUCH_DEVICEEnumLiteralDeclaration_3() { return cIS_TOUCH_DEVICEEnumLiteralDeclaration_3; }
+
+		//"isTouchDevice"
+		public Keyword getIS_TOUCH_DEVICEIsTouchDeviceKeyword_3_0() { return cIS_TOUCH_DEVICEIsTouchDeviceKeyword_3_0; }
+
+		//IS_HTTPS="isHttps"
+		public EnumLiteralDeclaration getIS_HTTPSEnumLiteralDeclaration_4() { return cIS_HTTPSEnumLiteralDeclaration_4; }
+
+		//"isHttps"
+		public Keyword getIS_HTTPSIsHttpsKeyword_4_0() { return cIS_HTTPSIsHttpsKeyword_4_0; }
+
+		//BROWSER_LOCALE="getBrowserLocale"
+		public EnumLiteralDeclaration getBROWSER_LOCALEEnumLiteralDeclaration_5() { return cBROWSER_LOCALEEnumLiteralDeclaration_5; }
+
+		//"getBrowserLocale"
+		public Keyword getBROWSER_LOCALEGetBrowserLocaleKeyword_5_0() { return cBROWSER_LOCALEGetBrowserLocaleKeyword_5_0; }
+
+		//USER_NAME="getUserName"
+		public EnumLiteralDeclaration getUSER_NAMEEnumLiteralDeclaration_6() { return cUSER_NAMEEnumLiteralDeclaration_6; }
+
+		//"getUserName"
+		public Keyword getUSER_NAMEGetUserNameKeyword_6_0() { return cUSER_NAMEGetUserNameKeyword_6_0; }
+
+		//USER_PASSWORD="getUserPassword"
+		public EnumLiteralDeclaration getUSER_PASSWORDEnumLiteralDeclaration_7() { return cUSER_PASSWORDEnumLiteralDeclaration_7; }
+
+		//"getUserPassword"
+		public Keyword getUSER_PASSWORDGetUserPasswordKeyword_7_0() { return cUSER_PASSWORDGetUserPasswordKeyword_7_0; }
+
+		//USER_EMAIL="getUserEmail"
+		public EnumLiteralDeclaration getUSER_EMAILEnumLiteralDeclaration_8() { return cUSER_EMAILEnumLiteralDeclaration_8; }
+
+		//"getUserEmail"
+		public Keyword getUSER_EMAILGetUserEmailKeyword_8_0() { return cUSER_EMAILGetUserEmailKeyword_8_0; }
+
+		//USER_POSITION="getUserPosition"
+		public EnumLiteralDeclaration getUSER_POSITIONEnumLiteralDeclaration_9() { return cUSER_POSITIONEnumLiteralDeclaration_9; }
+
+		//"getUserPosition"
+		public Keyword getUSER_POSITIONGetUserPositionKeyword_9_0() { return cUSER_POSITIONGetUserPositionKeyword_9_0; }
+
+		//USER_PRTSERVICE="getUserPrintService"
+		public EnumLiteralDeclaration getUSER_PRTSERVICEEnumLiteralDeclaration_10() { return cUSER_PRTSERVICEEnumLiteralDeclaration_10; }
+
+		//"getUserPrintService"
+		public Keyword getUSER_PRTSERVICEGetUserPrintServiceKeyword_10_0() { return cUSER_PRTSERVICEGetUserPrintServiceKeyword_10_0; }
+
+		//SCREEN_WIDTH="getSceenWidth"
+		public EnumLiteralDeclaration getSCREEN_WIDTHEnumLiteralDeclaration_11() { return cSCREEN_WIDTHEnumLiteralDeclaration_11; }
+
+		//"getSceenWidth"
+		public Keyword getSCREEN_WIDTHGetSceenWidthKeyword_11_0() { return cSCREEN_WIDTHGetSceenWidthKeyword_11_0; }
+
+		//SCREEN_HEIGHT="getScreenHeight"
+		public EnumLiteralDeclaration getSCREEN_HEIGHTEnumLiteralDeclaration_12() { return cSCREEN_HEIGHTEnumLiteralDeclaration_12; }
+
+		//"getScreenHeight"
+		public Keyword getSCREEN_HEIGHTGetScreenHeightKeyword_12_0() { return cSCREEN_HEIGHTGetScreenHeightKeyword_12_0; }
+
+		//TRIGGER="getTrigger"
+		public EnumLiteralDeclaration getTRIGGEREnumLiteralDeclaration_13() { return cTRIGGEREnumLiteralDeclaration_13; }
+
+		//"getTrigger"
+		public Keyword getTRIGGERGetTriggerKeyword_13_0() { return cTRIGGERGetTriggerKeyword_13_0; }
+	}
+
+	public class StatemachineUserMessageTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineUserMessageType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cHUMANIZED_MESSAGEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cHUMANIZED_MESSAGEHumanizedKeyword_0_0 = (Keyword)cHUMANIZED_MESSAGEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cWARNING_MESSAGEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cWARNING_MESSAGEWarningKeyword_1_0 = (Keyword)cWARNING_MESSAGEEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cERROR_MESSAGEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cERROR_MESSAGEErrorKeyword_2_0 = (Keyword)cERROR_MESSAGEEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cTRAY_NOTIFICATIONEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cTRAY_NOTIFICATIONTrayKeyword_3_0 = (Keyword)cTRAY_NOTIFICATIONEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cASSISTIVE_NOTIFICATIONAssistiveKeyword_4_0 = (Keyword)cASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4.eContents().get(0);
+		
+		//enum StatemachineUserMessageType:
+		//	HUMANIZED_MESSAGE="humanized" | WARNING_MESSAGE="warning" | ERROR_MESSAGE="error" | TRAY_NOTIFICATION="tray" |
+		//	ASSISTIVE_NOTIFICATION="assistive";
+		public EnumRule getRule() { return rule; }
+
+		//HUMANIZED_MESSAGE="humanized" | WARNING_MESSAGE="warning" | ERROR_MESSAGE="error" | TRAY_NOTIFICATION="tray" |
+		//ASSISTIVE_NOTIFICATION="assistive"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//HUMANIZED_MESSAGE="humanized"
+		public EnumLiteralDeclaration getHUMANIZED_MESSAGEEnumLiteralDeclaration_0() { return cHUMANIZED_MESSAGEEnumLiteralDeclaration_0; }
+
+		//"humanized"
+		public Keyword getHUMANIZED_MESSAGEHumanizedKeyword_0_0() { return cHUMANIZED_MESSAGEHumanizedKeyword_0_0; }
+
+		//WARNING_MESSAGE="warning"
+		public EnumLiteralDeclaration getWARNING_MESSAGEEnumLiteralDeclaration_1() { return cWARNING_MESSAGEEnumLiteralDeclaration_1; }
+
+		//"warning"
+		public Keyword getWARNING_MESSAGEWarningKeyword_1_0() { return cWARNING_MESSAGEWarningKeyword_1_0; }
+
+		//ERROR_MESSAGE="error"
+		public EnumLiteralDeclaration getERROR_MESSAGEEnumLiteralDeclaration_2() { return cERROR_MESSAGEEnumLiteralDeclaration_2; }
+
+		//"error"
+		public Keyword getERROR_MESSAGEErrorKeyword_2_0() { return cERROR_MESSAGEErrorKeyword_2_0; }
+
+		//TRAY_NOTIFICATION="tray"
+		public EnumLiteralDeclaration getTRAY_NOTIFICATIONEnumLiteralDeclaration_3() { return cTRAY_NOTIFICATIONEnumLiteralDeclaration_3; }
+
+		//"tray"
+		public Keyword getTRAY_NOTIFICATIONTrayKeyword_3_0() { return cTRAY_NOTIFICATIONTrayKeyword_3_0; }
+
+		//ASSISTIVE_NOTIFICATION="assistive"
+		public EnumLiteralDeclaration getASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4() { return cASSISTIVE_NOTIFICATIONEnumLiteralDeclaration_4; }
+
+		//"assistive"
+		public Keyword getASSISTIVE_NOTIFICATIONAssistiveKeyword_4_0() { return cASSISTIVE_NOTIFICATIONAssistiveKeyword_4_0; }
+	}
+
+	public class StatemachineLineDisplayCursorTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineLineDisplayCursorType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDISP_CT_NONEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDISP_CT_NONENoneKeyword_0_0 = (Keyword)cDISP_CT_NONEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_FIXEDEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDISP_CT_FIXEDFixedKeyword_1_0 = (Keyword)cDISP_CT_FIXEDEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_BLOCKEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDISP_CT_BLOCKBlockKeyword_2_0 = (Keyword)cDISP_CT_BLOCKEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_HALFBLOCKEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDISP_CT_HALFBLOCKHalfblockKeyword_3_0 = (Keyword)cDISP_CT_HALFBLOCKEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_UNDERLINEEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cDISP_CT_UNDERLINEUnderlineKeyword_4_0 = (Keyword)cDISP_CT_UNDERLINEEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_REVERSEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cDISP_CT_REVERSEReverseKeyword_5_0 = (Keyword)cDISP_CT_REVERSEEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_OTHEREnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cDISP_CT_OTHEROtherKeyword_6_0 = (Keyword)cDISP_CT_OTHEREnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_CT_BLINKEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cDISP_CT_BLINKBlinkKeyword_7_0 = (Keyword)cDISP_CT_BLINKEnumLiteralDeclaration_7.eContents().get(0);
+		
+		//enum StatemachineLineDisplayCursorType:
+		//	DISP_CT_NONE="none" | DISP_CT_FIXED="fixed" | DISP_CT_BLOCK="block" | DISP_CT_HALFBLOCK="halfblock" |
+		//	DISP_CT_UNDERLINE="underline" | DISP_CT_REVERSE="reverse" | DISP_CT_OTHER="other" | DISP_CT_BLINK="blink";
+		public EnumRule getRule() { return rule; }
+
+		//DISP_CT_NONE="none" | DISP_CT_FIXED="fixed" | DISP_CT_BLOCK="block" | DISP_CT_HALFBLOCK="halfblock" |
+		//DISP_CT_UNDERLINE="underline" | DISP_CT_REVERSE="reverse" | DISP_CT_OTHER="other" | DISP_CT_BLINK="blink"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DISP_CT_NONE="none"
+		public EnumLiteralDeclaration getDISP_CT_NONEEnumLiteralDeclaration_0() { return cDISP_CT_NONEEnumLiteralDeclaration_0; }
+
+		//"none"
+		public Keyword getDISP_CT_NONENoneKeyword_0_0() { return cDISP_CT_NONENoneKeyword_0_0; }
+
+		//DISP_CT_FIXED="fixed"
+		public EnumLiteralDeclaration getDISP_CT_FIXEDEnumLiteralDeclaration_1() { return cDISP_CT_FIXEDEnumLiteralDeclaration_1; }
+
+		//"fixed"
+		public Keyword getDISP_CT_FIXEDFixedKeyword_1_0() { return cDISP_CT_FIXEDFixedKeyword_1_0; }
+
+		//DISP_CT_BLOCK="block"
+		public EnumLiteralDeclaration getDISP_CT_BLOCKEnumLiteralDeclaration_2() { return cDISP_CT_BLOCKEnumLiteralDeclaration_2; }
+
+		//"block"
+		public Keyword getDISP_CT_BLOCKBlockKeyword_2_0() { return cDISP_CT_BLOCKBlockKeyword_2_0; }
+
+		//DISP_CT_HALFBLOCK="halfblock"
+		public EnumLiteralDeclaration getDISP_CT_HALFBLOCKEnumLiteralDeclaration_3() { return cDISP_CT_HALFBLOCKEnumLiteralDeclaration_3; }
+
+		//"halfblock"
+		public Keyword getDISP_CT_HALFBLOCKHalfblockKeyword_3_0() { return cDISP_CT_HALFBLOCKHalfblockKeyword_3_0; }
+
+		//DISP_CT_UNDERLINE="underline"
+		public EnumLiteralDeclaration getDISP_CT_UNDERLINEEnumLiteralDeclaration_4() { return cDISP_CT_UNDERLINEEnumLiteralDeclaration_4; }
+
+		//"underline"
+		public Keyword getDISP_CT_UNDERLINEUnderlineKeyword_4_0() { return cDISP_CT_UNDERLINEUnderlineKeyword_4_0; }
+
+		//DISP_CT_REVERSE="reverse"
+		public EnumLiteralDeclaration getDISP_CT_REVERSEEnumLiteralDeclaration_5() { return cDISP_CT_REVERSEEnumLiteralDeclaration_5; }
+
+		//"reverse"
+		public Keyword getDISP_CT_REVERSEReverseKeyword_5_0() { return cDISP_CT_REVERSEReverseKeyword_5_0; }
+
+		//DISP_CT_OTHER="other"
+		public EnumLiteralDeclaration getDISP_CT_OTHEREnumLiteralDeclaration_6() { return cDISP_CT_OTHEREnumLiteralDeclaration_6; }
+
+		//"other"
+		public Keyword getDISP_CT_OTHEROtherKeyword_6_0() { return cDISP_CT_OTHEROtherKeyword_6_0; }
+
+		//DISP_CT_BLINK="blink"
+		public EnumLiteralDeclaration getDISP_CT_BLINKEnumLiteralDeclaration_7() { return cDISP_CT_BLINKEnumLiteralDeclaration_7; }
+
+		//"blink"
+		public Keyword getDISP_CT_BLINKBlinkKeyword_7_0() { return cDISP_CT_BLINKBlinkKeyword_7_0; }
+	}
+
+	public class StatemachineLineDisplayMarqueeTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineLineDisplayMarqueeType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDISP_MT_NONEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDISP_MT_NONENoneKeyword_0_0 = (Keyword)cDISP_MT_NONEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MT_UPEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDISP_MT_UPUpKeyword_1_0 = (Keyword)cDISP_MT_UPEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MT_DOWNEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDISP_MT_DOWNDownKeyword_2_0 = (Keyword)cDISP_MT_DOWNEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MT_LEFTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDISP_MT_LEFTLeftKeyword_3_0 = (Keyword)cDISP_MT_LEFTEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MT_RIGHTEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cDISP_MT_RIGHTRightKeyword_4_0 = (Keyword)cDISP_MT_RIGHTEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MT_INITEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cDISP_MT_INITInitKeyword_5_0 = (Keyword)cDISP_MT_INITEnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum StatemachineLineDisplayMarqueeType:
+		//	DISP_MT_NONE="none" | DISP_MT_UP="up" | DISP_MT_DOWN="down" | DISP_MT_LEFT="left" | DISP_MT_RIGHT="right" |
+		//	DISP_MT_INIT="init";
+		public EnumRule getRule() { return rule; }
+
+		//DISP_MT_NONE="none" | DISP_MT_UP="up" | DISP_MT_DOWN="down" | DISP_MT_LEFT="left" | DISP_MT_RIGHT="right" |
+		//DISP_MT_INIT="init"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DISP_MT_NONE="none"
+		public EnumLiteralDeclaration getDISP_MT_NONEEnumLiteralDeclaration_0() { return cDISP_MT_NONEEnumLiteralDeclaration_0; }
+
+		//"none"
+		public Keyword getDISP_MT_NONENoneKeyword_0_0() { return cDISP_MT_NONENoneKeyword_0_0; }
+
+		//DISP_MT_UP="up"
+		public EnumLiteralDeclaration getDISP_MT_UPEnumLiteralDeclaration_1() { return cDISP_MT_UPEnumLiteralDeclaration_1; }
+
+		//"up"
+		public Keyword getDISP_MT_UPUpKeyword_1_0() { return cDISP_MT_UPUpKeyword_1_0; }
+
+		//DISP_MT_DOWN="down"
+		public EnumLiteralDeclaration getDISP_MT_DOWNEnumLiteralDeclaration_2() { return cDISP_MT_DOWNEnumLiteralDeclaration_2; }
+
+		//"down"
+		public Keyword getDISP_MT_DOWNDownKeyword_2_0() { return cDISP_MT_DOWNDownKeyword_2_0; }
+
+		//DISP_MT_LEFT="left"
+		public EnumLiteralDeclaration getDISP_MT_LEFTEnumLiteralDeclaration_3() { return cDISP_MT_LEFTEnumLiteralDeclaration_3; }
+
+		//"left"
+		public Keyword getDISP_MT_LEFTLeftKeyword_3_0() { return cDISP_MT_LEFTLeftKeyword_3_0; }
+
+		//DISP_MT_RIGHT="right"
+		public EnumLiteralDeclaration getDISP_MT_RIGHTEnumLiteralDeclaration_4() { return cDISP_MT_RIGHTEnumLiteralDeclaration_4; }
+
+		//"right"
+		public Keyword getDISP_MT_RIGHTRightKeyword_4_0() { return cDISP_MT_RIGHTRightKeyword_4_0; }
+
+		//DISP_MT_INIT="init"
+		public EnumLiteralDeclaration getDISP_MT_INITEnumLiteralDeclaration_5() { return cDISP_MT_INITEnumLiteralDeclaration_5; }
+
+		//"init"
+		public Keyword getDISP_MT_INITInitKeyword_5_0() { return cDISP_MT_INITInitKeyword_5_0; }
+	}
+
+	public class StatemachineLineDisplayMarqueeFormatElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineLineDisplayMarqueeFormat");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDISP_MF_WALKEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDISP_MF_WALKWalkKeyword_0_0 = (Keyword)cDISP_MF_WALKEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_MF_PLACEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDISP_MF_PLACEPlaceKeyword_1_0 = (Keyword)cDISP_MF_PLACEEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum StatemachineLineDisplayMarqueeFormat:
+		//	DISP_MF_WALK="walk" | DISP_MF_PLACE="place";
+		public EnumRule getRule() { return rule; }
+
+		//DISP_MF_WALK="walk" | DISP_MF_PLACE="place"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DISP_MF_WALK="walk"
+		public EnumLiteralDeclaration getDISP_MF_WALKEnumLiteralDeclaration_0() { return cDISP_MF_WALKEnumLiteralDeclaration_0; }
+
+		//"walk"
+		public Keyword getDISP_MF_WALKWalkKeyword_0_0() { return cDISP_MF_WALKWalkKeyword_0_0; }
+
+		//DISP_MF_PLACE="place"
+		public EnumLiteralDeclaration getDISP_MF_PLACEEnumLiteralDeclaration_1() { return cDISP_MF_PLACEEnumLiteralDeclaration_1; }
+
+		//"place"
+		public Keyword getDISP_MF_PLACEPlaceKeyword_1_0() { return cDISP_MF_PLACEPlaceKeyword_1_0; }
+	}
+
+	public class StatemachineLineDisplayTextTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineLineDisplayTextType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDISP_DT_NORMALEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDISP_DT_NORMALNormalKeyword_0_0 = (Keyword)cDISP_DT_NORMALEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_DT_BLINKEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDISP_DT_BLINKBlinkKeyword_1_0 = (Keyword)cDISP_DT_BLINKEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_DT_REVERSEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDISP_DT_REVERSEReverseKeyword_2_0 = (Keyword)cDISP_DT_REVERSEEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDISP_DT_BLINK_REVERSEBlinkreverseKeyword_3_0 = (Keyword)cDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum StatemachineLineDisplayTextType:
+		//	DISP_DT_NORMAL="normal" | DISP_DT_BLINK="blink" | DISP_DT_REVERSE="reverse" | DISP_DT_BLINK_REVERSE="blinkreverse";
+		public EnumRule getRule() { return rule; }
+
+		//DISP_DT_NORMAL="normal" | DISP_DT_BLINK="blink" | DISP_DT_REVERSE="reverse" | DISP_DT_BLINK_REVERSE="blinkreverse"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DISP_DT_NORMAL="normal"
+		public EnumLiteralDeclaration getDISP_DT_NORMALEnumLiteralDeclaration_0() { return cDISP_DT_NORMALEnumLiteralDeclaration_0; }
+
+		//"normal"
+		public Keyword getDISP_DT_NORMALNormalKeyword_0_0() { return cDISP_DT_NORMALNormalKeyword_0_0; }
+
+		//DISP_DT_BLINK="blink"
+		public EnumLiteralDeclaration getDISP_DT_BLINKEnumLiteralDeclaration_1() { return cDISP_DT_BLINKEnumLiteralDeclaration_1; }
+
+		//"blink"
+		public Keyword getDISP_DT_BLINKBlinkKeyword_1_0() { return cDISP_DT_BLINKBlinkKeyword_1_0; }
+
+		//DISP_DT_REVERSE="reverse"
+		public EnumLiteralDeclaration getDISP_DT_REVERSEEnumLiteralDeclaration_2() { return cDISP_DT_REVERSEEnumLiteralDeclaration_2; }
+
+		//"reverse"
+		public Keyword getDISP_DT_REVERSEReverseKeyword_2_0() { return cDISP_DT_REVERSEReverseKeyword_2_0; }
+
+		//DISP_DT_BLINK_REVERSE="blinkreverse"
+		public EnumLiteralDeclaration getDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3() { return cDISP_DT_BLINK_REVERSEEnumLiteralDeclaration_3; }
+
+		//"blinkreverse"
+		public Keyword getDISP_DT_BLINK_REVERSEBlinkreverseKeyword_3_0() { return cDISP_DT_BLINK_REVERSEBlinkreverseKeyword_3_0; }
+	}
+
+	public class StatemachineLineDisplayScrollTextTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachineLineDisplayScrollTextType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDISP_ST_UPEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDISP_ST_UPUpKeyword_0_0 = (Keyword)cDISP_ST_UPEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_ST_DOWNEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDISP_ST_DOWNDownKeyword_1_0 = (Keyword)cDISP_ST_DOWNEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_ST_LEFTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDISP_ST_LEFTLeftKeyword_2_0 = (Keyword)cDISP_ST_LEFTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDISP_ST_RIGHTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDISP_ST_RIGHTRightKeyword_3_0 = (Keyword)cDISP_ST_RIGHTEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum StatemachineLineDisplayScrollTextType:
+		//	DISP_ST_UP="up" | DISP_ST_DOWN="down" | DISP_ST_LEFT="left" | DISP_ST_RIGHT="right";
+		public EnumRule getRule() { return rule; }
+
+		//DISP_ST_UP="up" | DISP_ST_DOWN="down" | DISP_ST_LEFT="left" | DISP_ST_RIGHT="right"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DISP_ST_UP="up"
+		public EnumLiteralDeclaration getDISP_ST_UPEnumLiteralDeclaration_0() { return cDISP_ST_UPEnumLiteralDeclaration_0; }
+
+		//"up"
+		public Keyword getDISP_ST_UPUpKeyword_0_0() { return cDISP_ST_UPUpKeyword_0_0; }
+
+		//DISP_ST_DOWN="down"
+		public EnumLiteralDeclaration getDISP_ST_DOWNEnumLiteralDeclaration_1() { return cDISP_ST_DOWNEnumLiteralDeclaration_1; }
+
+		//"down"
+		public Keyword getDISP_ST_DOWNDownKeyword_1_0() { return cDISP_ST_DOWNDownKeyword_1_0; }
+
+		//DISP_ST_LEFT="left"
+		public EnumLiteralDeclaration getDISP_ST_LEFTEnumLiteralDeclaration_2() { return cDISP_ST_LEFTEnumLiteralDeclaration_2; }
+
+		//"left"
+		public Keyword getDISP_ST_LEFTLeftKeyword_2_0() { return cDISP_ST_LEFTLeftKeyword_2_0; }
+
+		//DISP_ST_RIGHT="right"
+		public EnumLiteralDeclaration getDISP_ST_RIGHTEnumLiteralDeclaration_3() { return cDISP_ST_RIGHTEnumLiteralDeclaration_3; }
+
+		//"right"
+		public Keyword getDISP_ST_RIGHTRightKeyword_3_0() { return cDISP_ST_RIGHTRightKeyword_3_0; }
+	}
+
+	public class StatemachinePOSPrinterBarcodeTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "StatemachinePOSPrinterBarcodeType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCAEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cPTR_BCS_UPCAUpcaKeyword_0_0 = (Keyword)cPTR_BCS_UPCAEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cPTR_BCS_UPCEUpcbKeyword_1_0 = (Keyword)cPTR_BCS_UPCEEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_JAN8EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cPTR_BCS_JAN8Jan8Keyword_2_0 = (Keyword)cPTR_BCS_JAN8EnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_EAN8EnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cPTR_BCS_EAN8Ean8Keyword_3_0 = (Keyword)cPTR_BCS_EAN8EnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_JAN13EnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cPTR_BCS_JAN13Jan13Keyword_4_0 = (Keyword)cPTR_BCS_JAN13EnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_EAN13EnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cPTR_BCS_EAN13Ean13Keyword_5_0 = (Keyword)cPTR_BCS_EAN13EnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_TFEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cPTR_BCS_TFTfKeyword_6_0 = (Keyword)cPTR_BCS_TFEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_ITFEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cPTR_BCS_ITFItfKeyword_7_0 = (Keyword)cPTR_BCS_ITFEnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_CodabarEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cPTR_BCS_CodabarCodeabarKeyword_8_0 = (Keyword)cPTR_BCS_CodabarEnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_Code39EnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cPTR_BCS_Code39Code39Keyword_9_0 = (Keyword)cPTR_BCS_Code39EnumLiteralDeclaration_9.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_Code93EnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+		private final Keyword cPTR_BCS_Code93Code93Keyword_10_0 = (Keyword)cPTR_BCS_Code93EnumLiteralDeclaration_10.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_Code128EnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
+		private final Keyword cPTR_BCS_Code128Code128Keyword_11_0 = (Keyword)cPTR_BCS_Code128EnumLiteralDeclaration_11.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCA_SEnumLiteralDeclaration_12 = (EnumLiteralDeclaration)cAlternatives.eContents().get(12);
+		private final Keyword cPTR_BCS_UPCA_SUpca_sKeyword_12_0 = (Keyword)cPTR_BCS_UPCA_SEnumLiteralDeclaration_12.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCE_SEnumLiteralDeclaration_13 = (EnumLiteralDeclaration)cAlternatives.eContents().get(13);
+		private final Keyword cPTR_BCS_UPCE_SUpce_sKeyword_13_0 = (Keyword)cPTR_BCS_UPCE_SEnumLiteralDeclaration_13.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCD1EnumLiteralDeclaration_14 = (EnumLiteralDeclaration)cAlternatives.eContents().get(14);
+		private final Keyword cPTR_BCS_UPCD1Upcd1Keyword_14_0 = (Keyword)cPTR_BCS_UPCD1EnumLiteralDeclaration_14.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCD2EnumLiteralDeclaration_15 = (EnumLiteralDeclaration)cAlternatives.eContents().get(15);
+		private final Keyword cPTR_BCS_UPCD2Upcd2Keyword_15_0 = (Keyword)cPTR_BCS_UPCD2EnumLiteralDeclaration_15.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCD3EnumLiteralDeclaration_16 = (EnumLiteralDeclaration)cAlternatives.eContents().get(16);
+		private final Keyword cPTR_BCS_UPCD3Upcd3Keyword_16_0 = (Keyword)cPTR_BCS_UPCD3EnumLiteralDeclaration_16.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCD4EnumLiteralDeclaration_17 = (EnumLiteralDeclaration)cAlternatives.eContents().get(17);
+		private final Keyword cPTR_BCS_UPCD4Upcd4Keyword_17_0 = (Keyword)cPTR_BCS_UPCD4EnumLiteralDeclaration_17.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPCD5EnumLiteralDeclaration_18 = (EnumLiteralDeclaration)cAlternatives.eContents().get(18);
+		private final Keyword cPTR_BCS_UPCD5Upcd5Keyword_18_0 = (Keyword)cPTR_BCS_UPCD5EnumLiteralDeclaration_18.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_EAN8_SEnumLiteralDeclaration_19 = (EnumLiteralDeclaration)cAlternatives.eContents().get(19);
+		private final Keyword cPTR_BCS_EAN8_SEan8_sKeyword_19_0 = (Keyword)cPTR_BCS_EAN8_SEnumLiteralDeclaration_19.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_EAN13_SEnumLiteralDeclaration_20 = (EnumLiteralDeclaration)cAlternatives.eContents().get(20);
+		private final Keyword cPTR_BCS_EAN13_SEan13_sKeyword_20_0 = (Keyword)cPTR_BCS_EAN13_SEnumLiteralDeclaration_20.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_EAN128EnumLiteralDeclaration_21 = (EnumLiteralDeclaration)cAlternatives.eContents().get(21);
+		private final Keyword cPTR_BCS_EAN128Ean128Keyword_21_0 = (Keyword)cPTR_BCS_EAN128EnumLiteralDeclaration_21.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_OCRAEnumLiteralDeclaration_22 = (EnumLiteralDeclaration)cAlternatives.eContents().get(22);
+		private final Keyword cPTR_BCS_OCRAOrcaKeyword_22_0 = (Keyword)cPTR_BCS_OCRAEnumLiteralDeclaration_22.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_OCRBEnumLiteralDeclaration_23 = (EnumLiteralDeclaration)cAlternatives.eContents().get(23);
+		private final Keyword cPTR_BCS_OCRBOcrbKeyword_23_0 = (Keyword)cPTR_BCS_OCRBEnumLiteralDeclaration_23.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24 = (EnumLiteralDeclaration)cAlternatives.eContents().get(24);
+		private final Keyword cPTR_BCS_Code128_ParsedCode128_parsedKeyword_24_0 = (Keyword)cPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_GS1DATABAREnumLiteralDeclaration_25 = (EnumLiteralDeclaration)cAlternatives.eContents().get(25);
+		private final Keyword cPTR_BCS_GS1DATABARGs1databarKeyword_25_0 = (Keyword)cPTR_BCS_GS1DATABAREnumLiteralDeclaration_25.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26 = (EnumLiteralDeclaration)cAlternatives.eContents().get(26);
+		private final Keyword cPTR_BCS_GS1DATABAR_EGs1databar_eKeyword_26_0 = (Keyword)cPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27 = (EnumLiteralDeclaration)cAlternatives.eContents().get(27);
+		private final Keyword cPTR_BCS_GS1DATABAR_SGs1databar_sKeyword_27_0 = (Keyword)cPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28 = (EnumLiteralDeclaration)cAlternatives.eContents().get(28);
+		private final Keyword cPTR_BCS_GS1DATABAR_E_SGs1databar_e_sKeyword_28_0 = (Keyword)cPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_PDF417EnumLiteralDeclaration_29 = (EnumLiteralDeclaration)cAlternatives.eContents().get(29);
+		private final Keyword cPTR_BCS_PDF417Pdf417Keyword_29_0 = (Keyword)cPTR_BCS_PDF417EnumLiteralDeclaration_29.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_MAXICODEEnumLiteralDeclaration_30 = (EnumLiteralDeclaration)cAlternatives.eContents().get(30);
+		private final Keyword cPTR_BCS_MAXICODEMaxicodeKeyword_30_0 = (Keyword)cPTR_BCS_MAXICODEEnumLiteralDeclaration_30.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31 = (EnumLiteralDeclaration)cAlternatives.eContents().get(31);
+		private final Keyword cPTR_BCS_DATAMATRIXDatamatrixKeyword_31_0 = (Keyword)cPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_QRCODEEnumLiteralDeclaration_32 = (EnumLiteralDeclaration)cAlternatives.eContents().get(32);
+		private final Keyword cPTR_BCS_QRCODEQrcodeKeyword_32_0 = (Keyword)cPTR_BCS_QRCODEEnumLiteralDeclaration_32.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UQRCODEEnumLiteralDeclaration_33 = (EnumLiteralDeclaration)cAlternatives.eContents().get(33);
+		private final Keyword cPTR_BCS_UQRCODEUqrcodeKeyword_33_0 = (Keyword)cPTR_BCS_UQRCODEEnumLiteralDeclaration_33.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_AZTECEnumLiteralDeclaration_34 = (EnumLiteralDeclaration)cAlternatives.eContents().get(34);
+		private final Keyword cPTR_BCS_AZTECAztecKeyword_34_0 = (Keyword)cPTR_BCS_AZTECEnumLiteralDeclaration_34.eContents().get(0);
+		private final EnumLiteralDeclaration cPTR_BCS_UPDF417EnumLiteralDeclaration_35 = (EnumLiteralDeclaration)cAlternatives.eContents().get(35);
+		private final Keyword cPTR_BCS_UPDF417Updf417Keyword_35_0 = (Keyword)cPTR_BCS_UPDF417EnumLiteralDeclaration_35.eContents().get(0);
+		
+		//enum StatemachinePOSPrinterBarcodeType:
+		//	PTR_BCS_UPCA="upca" | PTR_BCS_UPCE="upcb" | PTR_BCS_JAN8="jan8" | PTR_BCS_EAN8="ean8" | PTR_BCS_JAN13="jan13" |
+		//	PTR_BCS_EAN13="ean13" | PTR_BCS_TF="tf" | PTR_BCS_ITF="itf" | PTR_BCS_Codabar="codeabar" | PTR_BCS_Code39="code39" |
+		//	PTR_BCS_Code93="code93" | PTR_BCS_Code128="code128" | PTR_BCS_UPCA_S="upca_s" | PTR_BCS_UPCE_S="upce_s" |
+		//	PTR_BCS_UPCD1="upcd1" | PTR_BCS_UPCD2="upcd2" | PTR_BCS_UPCD3="upcd3" | PTR_BCS_UPCD4="upcd4" | PTR_BCS_UPCD5="upcd5"
+		//	| PTR_BCS_EAN8_S="ean8_s" | PTR_BCS_EAN13_S="ean13_s" | PTR_BCS_EAN128="ean128" | PTR_BCS_OCRA="orca" |
+		//	PTR_BCS_OCRB="ocrb" | PTR_BCS_Code128_Parsed="code128_parsed" | PTR_BCS_GS1DATABAR="gs1databar" |
+		//	PTR_BCS_GS1DATABAR_E="gs1databar_e" | PTR_BCS_GS1DATABAR_S="gs1databar_s" | PTR_BCS_GS1DATABAR_E_S="gs1databar_e_s" |
+		//	PTR_BCS_PDF417="pdf417" | PTR_BCS_MAXICODE="maxicode" | PTR_BCS_DATAMATRIX="datamatrix" | PTR_BCS_QRCODE="qrcode" |
+		//	PTR_BCS_UQRCODE="uqrcode" | PTR_BCS_AZTEC="aztec" | PTR_BCS_UPDF417="updf417";
+		public EnumRule getRule() { return rule; }
+
+		//PTR_BCS_UPCA="upca" | PTR_BCS_UPCE="upcb" | PTR_BCS_JAN8="jan8" | PTR_BCS_EAN8="ean8" | PTR_BCS_JAN13="jan13" |
+		//PTR_BCS_EAN13="ean13" | PTR_BCS_TF="tf" | PTR_BCS_ITF="itf" | PTR_BCS_Codabar="codeabar" | PTR_BCS_Code39="code39" |
+		//PTR_BCS_Code93="code93" | PTR_BCS_Code128="code128" | PTR_BCS_UPCA_S="upca_s" | PTR_BCS_UPCE_S="upce_s" |
+		//PTR_BCS_UPCD1="upcd1" | PTR_BCS_UPCD2="upcd2" | PTR_BCS_UPCD3="upcd3" | PTR_BCS_UPCD4="upcd4" | PTR_BCS_UPCD5="upcd5"
+		//| PTR_BCS_EAN8_S="ean8_s" | PTR_BCS_EAN13_S="ean13_s" | PTR_BCS_EAN128="ean128" | PTR_BCS_OCRA="orca" |
+		//PTR_BCS_OCRB="ocrb" | PTR_BCS_Code128_Parsed="code128_parsed" | PTR_BCS_GS1DATABAR="gs1databar" |
+		//PTR_BCS_GS1DATABAR_E="gs1databar_e" | PTR_BCS_GS1DATABAR_S="gs1databar_s" | PTR_BCS_GS1DATABAR_E_S="gs1databar_e_s" |
+		//PTR_BCS_PDF417="pdf417" | PTR_BCS_MAXICODE="maxicode" | PTR_BCS_DATAMATRIX="datamatrix" | PTR_BCS_QRCODE="qrcode" |
+		//PTR_BCS_UQRCODE="uqrcode" | PTR_BCS_AZTEC="aztec" | PTR_BCS_UPDF417="updf417"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//PTR_BCS_UPCA="upca"
+		public EnumLiteralDeclaration getPTR_BCS_UPCAEnumLiteralDeclaration_0() { return cPTR_BCS_UPCAEnumLiteralDeclaration_0; }
+
+		//"upca"
+		public Keyword getPTR_BCS_UPCAUpcaKeyword_0_0() { return cPTR_BCS_UPCAUpcaKeyword_0_0; }
+
+		//PTR_BCS_UPCE="upcb"
+		public EnumLiteralDeclaration getPTR_BCS_UPCEEnumLiteralDeclaration_1() { return cPTR_BCS_UPCEEnumLiteralDeclaration_1; }
+
+		//"upcb"
+		public Keyword getPTR_BCS_UPCEUpcbKeyword_1_0() { return cPTR_BCS_UPCEUpcbKeyword_1_0; }
+
+		//PTR_BCS_JAN8="jan8"
+		public EnumLiteralDeclaration getPTR_BCS_JAN8EnumLiteralDeclaration_2() { return cPTR_BCS_JAN8EnumLiteralDeclaration_2; }
+
+		//"jan8"
+		public Keyword getPTR_BCS_JAN8Jan8Keyword_2_0() { return cPTR_BCS_JAN8Jan8Keyword_2_0; }
+
+		//PTR_BCS_EAN8="ean8"
+		public EnumLiteralDeclaration getPTR_BCS_EAN8EnumLiteralDeclaration_3() { return cPTR_BCS_EAN8EnumLiteralDeclaration_3; }
+
+		//"ean8"
+		public Keyword getPTR_BCS_EAN8Ean8Keyword_3_0() { return cPTR_BCS_EAN8Ean8Keyword_3_0; }
+
+		//PTR_BCS_JAN13="jan13"
+		public EnumLiteralDeclaration getPTR_BCS_JAN13EnumLiteralDeclaration_4() { return cPTR_BCS_JAN13EnumLiteralDeclaration_4; }
+
+		//"jan13"
+		public Keyword getPTR_BCS_JAN13Jan13Keyword_4_0() { return cPTR_BCS_JAN13Jan13Keyword_4_0; }
+
+		//PTR_BCS_EAN13="ean13"
+		public EnumLiteralDeclaration getPTR_BCS_EAN13EnumLiteralDeclaration_5() { return cPTR_BCS_EAN13EnumLiteralDeclaration_5; }
+
+		//"ean13"
+		public Keyword getPTR_BCS_EAN13Ean13Keyword_5_0() { return cPTR_BCS_EAN13Ean13Keyword_5_0; }
+
+		//PTR_BCS_TF="tf"
+		public EnumLiteralDeclaration getPTR_BCS_TFEnumLiteralDeclaration_6() { return cPTR_BCS_TFEnumLiteralDeclaration_6; }
+
+		//"tf"
+		public Keyword getPTR_BCS_TFTfKeyword_6_0() { return cPTR_BCS_TFTfKeyword_6_0; }
+
+		//PTR_BCS_ITF="itf"
+		public EnumLiteralDeclaration getPTR_BCS_ITFEnumLiteralDeclaration_7() { return cPTR_BCS_ITFEnumLiteralDeclaration_7; }
+
+		//"itf"
+		public Keyword getPTR_BCS_ITFItfKeyword_7_0() { return cPTR_BCS_ITFItfKeyword_7_0; }
+
+		//PTR_BCS_Codabar="codeabar"
+		public EnumLiteralDeclaration getPTR_BCS_CodabarEnumLiteralDeclaration_8() { return cPTR_BCS_CodabarEnumLiteralDeclaration_8; }
+
+		//"codeabar"
+		public Keyword getPTR_BCS_CodabarCodeabarKeyword_8_0() { return cPTR_BCS_CodabarCodeabarKeyword_8_0; }
+
+		//PTR_BCS_Code39="code39"
+		public EnumLiteralDeclaration getPTR_BCS_Code39EnumLiteralDeclaration_9() { return cPTR_BCS_Code39EnumLiteralDeclaration_9; }
+
+		//"code39"
+		public Keyword getPTR_BCS_Code39Code39Keyword_9_0() { return cPTR_BCS_Code39Code39Keyword_9_0; }
+
+		//PTR_BCS_Code93="code93"
+		public EnumLiteralDeclaration getPTR_BCS_Code93EnumLiteralDeclaration_10() { return cPTR_BCS_Code93EnumLiteralDeclaration_10; }
+
+		//"code93"
+		public Keyword getPTR_BCS_Code93Code93Keyword_10_0() { return cPTR_BCS_Code93Code93Keyword_10_0; }
+
+		//PTR_BCS_Code128="code128"
+		public EnumLiteralDeclaration getPTR_BCS_Code128EnumLiteralDeclaration_11() { return cPTR_BCS_Code128EnumLiteralDeclaration_11; }
+
+		//"code128"
+		public Keyword getPTR_BCS_Code128Code128Keyword_11_0() { return cPTR_BCS_Code128Code128Keyword_11_0; }
+
+		//PTR_BCS_UPCA_S="upca_s"
+		public EnumLiteralDeclaration getPTR_BCS_UPCA_SEnumLiteralDeclaration_12() { return cPTR_BCS_UPCA_SEnumLiteralDeclaration_12; }
+
+		//"upca_s"
+		public Keyword getPTR_BCS_UPCA_SUpca_sKeyword_12_0() { return cPTR_BCS_UPCA_SUpca_sKeyword_12_0; }
+
+		//PTR_BCS_UPCE_S="upce_s"
+		public EnumLiteralDeclaration getPTR_BCS_UPCE_SEnumLiteralDeclaration_13() { return cPTR_BCS_UPCE_SEnumLiteralDeclaration_13; }
+
+		//"upce_s"
+		public Keyword getPTR_BCS_UPCE_SUpce_sKeyword_13_0() { return cPTR_BCS_UPCE_SUpce_sKeyword_13_0; }
+
+		//PTR_BCS_UPCD1="upcd1"
+		public EnumLiteralDeclaration getPTR_BCS_UPCD1EnumLiteralDeclaration_14() { return cPTR_BCS_UPCD1EnumLiteralDeclaration_14; }
+
+		//"upcd1"
+		public Keyword getPTR_BCS_UPCD1Upcd1Keyword_14_0() { return cPTR_BCS_UPCD1Upcd1Keyword_14_0; }
+
+		//PTR_BCS_UPCD2="upcd2"
+		public EnumLiteralDeclaration getPTR_BCS_UPCD2EnumLiteralDeclaration_15() { return cPTR_BCS_UPCD2EnumLiteralDeclaration_15; }
+
+		//"upcd2"
+		public Keyword getPTR_BCS_UPCD2Upcd2Keyword_15_0() { return cPTR_BCS_UPCD2Upcd2Keyword_15_0; }
+
+		//PTR_BCS_UPCD3="upcd3"
+		public EnumLiteralDeclaration getPTR_BCS_UPCD3EnumLiteralDeclaration_16() { return cPTR_BCS_UPCD3EnumLiteralDeclaration_16; }
+
+		//"upcd3"
+		public Keyword getPTR_BCS_UPCD3Upcd3Keyword_16_0() { return cPTR_BCS_UPCD3Upcd3Keyword_16_0; }
+
+		//PTR_BCS_UPCD4="upcd4"
+		public EnumLiteralDeclaration getPTR_BCS_UPCD4EnumLiteralDeclaration_17() { return cPTR_BCS_UPCD4EnumLiteralDeclaration_17; }
+
+		//"upcd4"
+		public Keyword getPTR_BCS_UPCD4Upcd4Keyword_17_0() { return cPTR_BCS_UPCD4Upcd4Keyword_17_0; }
+
+		//PTR_BCS_UPCD5="upcd5"
+		public EnumLiteralDeclaration getPTR_BCS_UPCD5EnumLiteralDeclaration_18() { return cPTR_BCS_UPCD5EnumLiteralDeclaration_18; }
+
+		//"upcd5"
+		public Keyword getPTR_BCS_UPCD5Upcd5Keyword_18_0() { return cPTR_BCS_UPCD5Upcd5Keyword_18_0; }
+
+		//PTR_BCS_EAN8_S="ean8_s"
+		public EnumLiteralDeclaration getPTR_BCS_EAN8_SEnumLiteralDeclaration_19() { return cPTR_BCS_EAN8_SEnumLiteralDeclaration_19; }
+
+		//"ean8_s"
+		public Keyword getPTR_BCS_EAN8_SEan8_sKeyword_19_0() { return cPTR_BCS_EAN8_SEan8_sKeyword_19_0; }
+
+		//PTR_BCS_EAN13_S="ean13_s"
+		public EnumLiteralDeclaration getPTR_BCS_EAN13_SEnumLiteralDeclaration_20() { return cPTR_BCS_EAN13_SEnumLiteralDeclaration_20; }
+
+		//"ean13_s"
+		public Keyword getPTR_BCS_EAN13_SEan13_sKeyword_20_0() { return cPTR_BCS_EAN13_SEan13_sKeyword_20_0; }
+
+		//PTR_BCS_EAN128="ean128"
+		public EnumLiteralDeclaration getPTR_BCS_EAN128EnumLiteralDeclaration_21() { return cPTR_BCS_EAN128EnumLiteralDeclaration_21; }
+
+		//"ean128"
+		public Keyword getPTR_BCS_EAN128Ean128Keyword_21_0() { return cPTR_BCS_EAN128Ean128Keyword_21_0; }
+
+		//PTR_BCS_OCRA="orca"
+		public EnumLiteralDeclaration getPTR_BCS_OCRAEnumLiteralDeclaration_22() { return cPTR_BCS_OCRAEnumLiteralDeclaration_22; }
+
+		//"orca"
+		public Keyword getPTR_BCS_OCRAOrcaKeyword_22_0() { return cPTR_BCS_OCRAOrcaKeyword_22_0; }
+
+		//PTR_BCS_OCRB="ocrb"
+		public EnumLiteralDeclaration getPTR_BCS_OCRBEnumLiteralDeclaration_23() { return cPTR_BCS_OCRBEnumLiteralDeclaration_23; }
+
+		//"ocrb"
+		public Keyword getPTR_BCS_OCRBOcrbKeyword_23_0() { return cPTR_BCS_OCRBOcrbKeyword_23_0; }
+
+		//PTR_BCS_Code128_Parsed="code128_parsed"
+		public EnumLiteralDeclaration getPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24() { return cPTR_BCS_Code128_ParsedEnumLiteralDeclaration_24; }
+
+		//"code128_parsed"
+		public Keyword getPTR_BCS_Code128_ParsedCode128_parsedKeyword_24_0() { return cPTR_BCS_Code128_ParsedCode128_parsedKeyword_24_0; }
+
+		//PTR_BCS_GS1DATABAR="gs1databar"
+		public EnumLiteralDeclaration getPTR_BCS_GS1DATABAREnumLiteralDeclaration_25() { return cPTR_BCS_GS1DATABAREnumLiteralDeclaration_25; }
+
+		//"gs1databar"
+		public Keyword getPTR_BCS_GS1DATABARGs1databarKeyword_25_0() { return cPTR_BCS_GS1DATABARGs1databarKeyword_25_0; }
+
+		//PTR_BCS_GS1DATABAR_E="gs1databar_e"
+		public EnumLiteralDeclaration getPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26() { return cPTR_BCS_GS1DATABAR_EEnumLiteralDeclaration_26; }
+
+		//"gs1databar_e"
+		public Keyword getPTR_BCS_GS1DATABAR_EGs1databar_eKeyword_26_0() { return cPTR_BCS_GS1DATABAR_EGs1databar_eKeyword_26_0; }
+
+		//PTR_BCS_GS1DATABAR_S="gs1databar_s"
+		public EnumLiteralDeclaration getPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27() { return cPTR_BCS_GS1DATABAR_SEnumLiteralDeclaration_27; }
+
+		//"gs1databar_s"
+		public Keyword getPTR_BCS_GS1DATABAR_SGs1databar_sKeyword_27_0() { return cPTR_BCS_GS1DATABAR_SGs1databar_sKeyword_27_0; }
+
+		//PTR_BCS_GS1DATABAR_E_S="gs1databar_e_s"
+		public EnumLiteralDeclaration getPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28() { return cPTR_BCS_GS1DATABAR_E_SEnumLiteralDeclaration_28; }
+
+		//"gs1databar_e_s"
+		public Keyword getPTR_BCS_GS1DATABAR_E_SGs1databar_e_sKeyword_28_0() { return cPTR_BCS_GS1DATABAR_E_SGs1databar_e_sKeyword_28_0; }
+
+		//PTR_BCS_PDF417="pdf417"
+		public EnumLiteralDeclaration getPTR_BCS_PDF417EnumLiteralDeclaration_29() { return cPTR_BCS_PDF417EnumLiteralDeclaration_29; }
+
+		//"pdf417"
+		public Keyword getPTR_BCS_PDF417Pdf417Keyword_29_0() { return cPTR_BCS_PDF417Pdf417Keyword_29_0; }
+
+		//PTR_BCS_MAXICODE="maxicode"
+		public EnumLiteralDeclaration getPTR_BCS_MAXICODEEnumLiteralDeclaration_30() { return cPTR_BCS_MAXICODEEnumLiteralDeclaration_30; }
+
+		//"maxicode"
+		public Keyword getPTR_BCS_MAXICODEMaxicodeKeyword_30_0() { return cPTR_BCS_MAXICODEMaxicodeKeyword_30_0; }
+
+		//PTR_BCS_DATAMATRIX="datamatrix"
+		public EnumLiteralDeclaration getPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31() { return cPTR_BCS_DATAMATRIXEnumLiteralDeclaration_31; }
+
+		//"datamatrix"
+		public Keyword getPTR_BCS_DATAMATRIXDatamatrixKeyword_31_0() { return cPTR_BCS_DATAMATRIXDatamatrixKeyword_31_0; }
+
+		//PTR_BCS_QRCODE="qrcode"
+		public EnumLiteralDeclaration getPTR_BCS_QRCODEEnumLiteralDeclaration_32() { return cPTR_BCS_QRCODEEnumLiteralDeclaration_32; }
+
+		//"qrcode"
+		public Keyword getPTR_BCS_QRCODEQrcodeKeyword_32_0() { return cPTR_BCS_QRCODEQrcodeKeyword_32_0; }
+
+		//PTR_BCS_UQRCODE="uqrcode"
+		public EnumLiteralDeclaration getPTR_BCS_UQRCODEEnumLiteralDeclaration_33() { return cPTR_BCS_UQRCODEEnumLiteralDeclaration_33; }
+
+		//"uqrcode"
+		public Keyword getPTR_BCS_UQRCODEUqrcodeKeyword_33_0() { return cPTR_BCS_UQRCODEUqrcodeKeyword_33_0; }
+
+		//PTR_BCS_AZTEC="aztec"
+		public EnumLiteralDeclaration getPTR_BCS_AZTECEnumLiteralDeclaration_34() { return cPTR_BCS_AZTECEnumLiteralDeclaration_34; }
+
+		//"aztec"
+		public Keyword getPTR_BCS_AZTECAztecKeyword_34_0() { return cPTR_BCS_AZTECAztecKeyword_34_0; }
+
+		//PTR_BCS_UPDF417="updf417"
+		public EnumLiteralDeclaration getPTR_BCS_UPDF417EnumLiteralDeclaration_35() { return cPTR_BCS_UPDF417EnumLiteralDeclaration_35; }
+
+		//"updf417"
+		public Keyword getPTR_BCS_UPDF417Updf417Keyword_35_0() { return cPTR_BCS_UPDF417Updf417Keyword_35_0; }
+	}
+	
+	private final StatemachineModelElements pStatemachineModel;
+	private final StatemachinePackageElements pStatemachinePackage;
+	private final StatemachineElements pStatemachine;
+	private final StatemachineEventElements pStatemachineEvent;
+	private final StatemachineStateElements pStatemachineState;
+	private final StatemachineTriggerElements pStatemachineTrigger;
+	private final StatemachineActionElements pStatemachineAction;
+	private final StatemachineActionPeripheralBlinkRateElements pStatemachineActionPeripheralBlinkRate;
+	private final StatemachineActionPeripheralClearElements pStatemachineActionPeripheralClear;
+	private final StatemachineActionPeripheralCreateWindowElements pStatemachineActionPeripheralCreateWindow;
+	private final StatemachineActionPeripheralCursorTypeElements pStatemachineActionPeripheralCursorType;
+	private final StatemachineActionPeripheralDestroyWindowElements pStatemachineActionPeripheralDestroyWindow;
+	private final StatemachineActionPeripheralDeviceBrightnessElements pStatemachineActionPeripheralDeviceBrightness;
+	private final StatemachineActionPeripheralDisplayBitmapElements pStatemachineActionPeripheralDisplayBitmap;
+	private final StatemachineActionPeripheralDisplayTextElements pStatemachineActionPeripheralDisplayText;
+	private final StatemachineActionPeripheralDisplayTextAtElements pStatemachineActionPeripheralDisplayTextAt;
+	private final StatemachineActionPeripheralInterCharacterWaitElements pStatemachineActionPeripheralInterCharacterWait;
+	private final StatemachineActionPeripheralMarqueeFormatElements pStatemachineActionPeripheralMarqueeFormat;
+	private final StatemachineActionPeripheralMarqueeRepeatWaitElements pStatemachineActionPeripheralMarqueeRepeatWait;
+	private final StatemachineActionPeripheralMarqueeTypeElements pStatemachineActionPeripheralMarqueeType;
+	private final StatemachineActionPeripheralMarqueeUnitWaitElements pStatemachineActionPeripheralMarqueeUnitWait;
+	private final StatemachineActionPeripheralScrollElements pStatemachineActionPeripheralScroll;
+	private final StatemachineActionPeripheralOpenDrawerElements pStatemachineActionPeripheralOpenDrawer;
+	private final StatemachineActionPeripheralPrintBarcodeElements pStatemachineActionPeripheralPrintBarcode;
+	private final StatemachineActionPeripheralPrintBitmapElements pStatemachineActionPeripheralPrintBitmap;
+	private final StatemachineActionPeripheralPrintCutElements pStatemachineActionPeripheralPrintCut;
+	private final StatemachineActionPeripheralPrintNormalElements pStatemachineActionPeripheralPrintNormal;
+	private final StatemachineActionPeripheralPrintRegisterBitmapElements pStatemachineActionPeripheralPrintRegisterBitmap;
+	private final StatemachineActionPeripheralPTOpenElements pStatemachineActionPeripheralPTOpen;
+	private final StatemachineActionPeripheralPTCloseElements pStatemachineActionPeripheralPTClose;
+	private final StatemachineActionPeripheralPTAcknowledgeElements pStatemachineActionPeripheralPTAcknowledge;
+	private final StatemachineActionPeripheralPTReversalElements pStatemachineActionPeripheralPTReversal;
+	private final StatemachineActionPeripheralPTRegistrationElements pStatemachineActionPeripheralPTRegistration;
+	private final StatemachineActionPeripheralPTAuthorizationElements pStatemachineActionPeripheralPTAuthorization;
+	private final StatemachineActionPeripheralPTResponseElements pStatemachineActionPeripheralPTResponse;
+	private final StatemachineActionPeripheralPrintReportElements pStatemachineActionPeripheralPrintReport;
+	private final StatemachineActionFieldSourceElements pStatemachineActionFieldSource;
+	private final StatemachineOperationElements pStatemachineOperation;
+	private final StatemachineGuardElements pStatemachineGuard;
+	private final StatemachineFunctionElements pStatemachineFunction;
+	private final StatemachineStorageElements pStatemachineStorage;
+	private final StatemachineStorageRetrieveElements pStatemachineStorageRetrieve;
+	private final StatemachineActionConditionalTransitionElements pStatemachineActionConditionalTransition;
+	private final StatemachineActionFieldSourceStringElements pStatemachineActionFieldSourceString;
+	private final StatemachineActionFieldSourceNumberElements pStatemachineActionFieldSourceNumber;
+	private final StatemachineActionFieldSourceEvaluateElements pStatemachineActionFieldSourceEvaluate;
+	private final StatemachineActionFieldSourceEventElements pStatemachineActionFieldSourceEvent;
+	private final StatemachineActionFieldSourceTranslateElements pStatemachineActionFieldSourceTranslate;
+	private final StatemachineActionFieldSourceDtoAttributeElements pStatemachineActionFieldSourceDtoAttribute;
+	private final StatemachineActionFieldSourceMoreElements pStatemachineActionFieldSourceMore;
+	private final StatemachineActionFieldSourceStringMoreElements pStatemachineActionFieldSourceStringMore;
+	private final StatemachineActionFieldSourceNumberMoreElements pStatemachineActionFieldSourceNumberMore;
+	private final StatemachineActionFieldSourceEvaluateMoreElements pStatemachineActionFieldSourceEvaluateMore;
+	private final StatemachineActionFieldSourceTranslateMoreElements pStatemachineActionFieldSourceTranslateMore;
+	private final StatemachineActionFieldGetMoreElements pStatemachineActionFieldGetMore;
+	private final StatemachineOperationMoreElements pStatemachineOperationMore;
+	private final StatemachineStorageRetrieveMoreElements pStatemachineStorageRetrieveMore;
+	private final StatemachineActionFieldSourceDtoAttributeMoreElements pStatemachineActionFieldSourceDtoAttributeMore;
+	private final StatemachineActionFieldConcatenationElements pStatemachineActionFieldConcatenation;
+	private final StatemachineOperationParameterElements pStatemachineOperationParameter;
+	private final StatemachineOperationParameterMoreElements pStatemachineOperationParameterMore;
+	private final StatemachineActionFieldSetElements pStatemachineActionFieldSet;
+	private final StatemachineActionFieldClearElements pStatemachineActionFieldClear;
+	private final StatemachineActionFieldGetElements pStatemachineActionFieldGet;
+	private final StatemachineActionFieldRemoveElements pStatemachineActionFieldRemove;
+	private final StatemachineControlVisibilityElements pStatemachineControlVisibility;
+	private final StatemachineActionItemVisibleElements pStatemachineActionItemVisible;
+	private final StatemachineActionItemInvisibleElements pStatemachineActionItemInvisible;
+	private final StatemachineActionButtonCaptionElements pStatemachineActionButtonCaption;
+	private final StatemachineActionButtonImageElements pStatemachineActionButtonImage;
+	private final StatemachineActionDTOFindElements pStatemachineActionDTOFind;
+	private final StatemachineActionSchedulerElements pStatemachineActionScheduler;
+	private final StatemachineControlElements pStatemachineControl;
+	private final StatemachineControlButtonElements pStatemachineControlButton;
+	private final StatemachineControlFieldElements pStatemachineControlField;
+	private final StatemachineControlDTOElements pStatemachineControlDTO;
+	private final StatemachineControlSchedulerElements pStatemachineControlScheduler;
+	private final StatemachinePeripheralDeviceLineDisplayElements pStatemachinePeripheralDeviceLineDisplay;
+	private final StatemachinePeripheralDevicePOSPrinterElements pStatemachinePeripheralDevicePOSPrinter;
+	private final StatemachinePeripheralDeviceCashDrawerElements pStatemachinePeripheralDeviceCashDrawer;
+	private final StatemachinePeripheralDevicePTElements pStatemachinePeripheralDevicePT;
+	private final StatemachineControlPeripheralElements pStatemachineControlPeripheral;
+	private final StatemachineControlButtonAttributeElements pStatemachineControlButtonAttribute;
+	private final StatemachineControlButtonAttributeEventElements pStatemachineControlButtonAttributeEvent;
+	private final StatemachineControlButtonAttributeEventKeyboardElements pStatemachineControlButtonAttributeEventKeyboard;
+	private final StatemachineControlButtonAttributeEventIdentityElements pStatemachineControlButtonAttributeEventIdentity;
+	private final StatemachineControlButtonAttributeEventEventElements pStatemachineControlButtonAttributeEventEvent;
+	private final StatemachineControlFieldAttributeElements pStatemachineControlFieldAttribute;
+	private final StatemachineControlFieldLayoutElements pStatemachineControlFieldLayout;
+	private final StatemachineControlDTOAttributeElements pStatemachineControlDTOAttribute;
+	private final StatemachineControlSchedulerAttributeElements pStatemachineControlSchedulerAttribute;
+	private final StatemachineDTOTypeElements pStatemachineDTOType;
+	private final StatemachineFieldTypeElements pStatemachineFieldType;
+	private final StatemachineInternalTypeElements unknownRuleStatemachineInternalType;
+	private final StatemachineControlButtonEventTypeElements unknownRuleStatemachineControlButtonEventType;
+	private final StatemachineEvaluationTypeElements unknownRuleStatemachineEvaluationType;
+	private final StatemachineUserMessageTypeElements unknownRuleStatemachineUserMessageType;
+	private final StatemachineLineDisplayCursorTypeElements unknownRuleStatemachineLineDisplayCursorType;
+	private final StatemachineLineDisplayMarqueeTypeElements unknownRuleStatemachineLineDisplayMarqueeType;
+	private final StatemachineLineDisplayMarqueeFormatElements unknownRuleStatemachineLineDisplayMarqueeFormat;
+	private final StatemachineLineDisplayTextTypeElements unknownRuleStatemachineLineDisplayTextType;
+	private final StatemachineLineDisplayScrollTextTypeElements unknownRuleStatemachineLineDisplayScrollTextType;
+	private final StatemachinePOSPrinterBarcodeTypeElements unknownRuleStatemachinePOSPrinterBarcodeType;
+	private final StatemachineImportElements pStatemachineImport;
+	private final StatemachineQualifiedNameWithWildCardElements pStatemachineQualifiedNameWithWildCard;
+	private final QualifiedNameElements pQualifiedName;
+	private final ValidIDElements pValidID;
+	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
+	private final TRANSLATABLEIDElements pTRANSLATABLEID;
+	private final SignedNumberElements pSignedNumber;
+	private final UnsignedNumberElements pUnsignedNumber;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public StatemachineDSLGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pStatemachineModel = new StatemachineModelElements();
+		this.pStatemachinePackage = new StatemachinePackageElements();
+		this.pStatemachine = new StatemachineElements();
+		this.pStatemachineEvent = new StatemachineEventElements();
+		this.pStatemachineState = new StatemachineStateElements();
+		this.pStatemachineTrigger = new StatemachineTriggerElements();
+		this.pStatemachineAction = new StatemachineActionElements();
+		this.pStatemachineActionPeripheralBlinkRate = new StatemachineActionPeripheralBlinkRateElements();
+		this.pStatemachineActionPeripheralClear = new StatemachineActionPeripheralClearElements();
+		this.pStatemachineActionPeripheralCreateWindow = new StatemachineActionPeripheralCreateWindowElements();
+		this.pStatemachineActionPeripheralCursorType = new StatemachineActionPeripheralCursorTypeElements();
+		this.pStatemachineActionPeripheralDestroyWindow = new StatemachineActionPeripheralDestroyWindowElements();
+		this.pStatemachineActionPeripheralDeviceBrightness = new StatemachineActionPeripheralDeviceBrightnessElements();
+		this.pStatemachineActionPeripheralDisplayBitmap = new StatemachineActionPeripheralDisplayBitmapElements();
+		this.pStatemachineActionPeripheralDisplayText = new StatemachineActionPeripheralDisplayTextElements();
+		this.pStatemachineActionPeripheralDisplayTextAt = new StatemachineActionPeripheralDisplayTextAtElements();
+		this.pStatemachineActionPeripheralInterCharacterWait = new StatemachineActionPeripheralInterCharacterWaitElements();
+		this.pStatemachineActionPeripheralMarqueeFormat = new StatemachineActionPeripheralMarqueeFormatElements();
+		this.pStatemachineActionPeripheralMarqueeRepeatWait = new StatemachineActionPeripheralMarqueeRepeatWaitElements();
+		this.pStatemachineActionPeripheralMarqueeType = new StatemachineActionPeripheralMarqueeTypeElements();
+		this.pStatemachineActionPeripheralMarqueeUnitWait = new StatemachineActionPeripheralMarqueeUnitWaitElements();
+		this.pStatemachineActionPeripheralScroll = new StatemachineActionPeripheralScrollElements();
+		this.pStatemachineActionPeripheralOpenDrawer = new StatemachineActionPeripheralOpenDrawerElements();
+		this.pStatemachineActionPeripheralPrintBarcode = new StatemachineActionPeripheralPrintBarcodeElements();
+		this.pStatemachineActionPeripheralPrintBitmap = new StatemachineActionPeripheralPrintBitmapElements();
+		this.pStatemachineActionPeripheralPrintCut = new StatemachineActionPeripheralPrintCutElements();
+		this.pStatemachineActionPeripheralPrintNormal = new StatemachineActionPeripheralPrintNormalElements();
+		this.pStatemachineActionPeripheralPrintRegisterBitmap = new StatemachineActionPeripheralPrintRegisterBitmapElements();
+		this.pStatemachineActionPeripheralPTOpen = new StatemachineActionPeripheralPTOpenElements();
+		this.pStatemachineActionPeripheralPTClose = new StatemachineActionPeripheralPTCloseElements();
+		this.pStatemachineActionPeripheralPTAcknowledge = new StatemachineActionPeripheralPTAcknowledgeElements();
+		this.pStatemachineActionPeripheralPTReversal = new StatemachineActionPeripheralPTReversalElements();
+		this.pStatemachineActionPeripheralPTRegistration = new StatemachineActionPeripheralPTRegistrationElements();
+		this.pStatemachineActionPeripheralPTAuthorization = new StatemachineActionPeripheralPTAuthorizationElements();
+		this.pStatemachineActionPeripheralPTResponse = new StatemachineActionPeripheralPTResponseElements();
+		this.pStatemachineActionPeripheralPrintReport = new StatemachineActionPeripheralPrintReportElements();
+		this.pStatemachineActionFieldSource = new StatemachineActionFieldSourceElements();
+		this.pStatemachineOperation = new StatemachineOperationElements();
+		this.pStatemachineGuard = new StatemachineGuardElements();
+		this.pStatemachineFunction = new StatemachineFunctionElements();
+		this.pStatemachineStorage = new StatemachineStorageElements();
+		this.pStatemachineStorageRetrieve = new StatemachineStorageRetrieveElements();
+		this.pStatemachineActionConditionalTransition = new StatemachineActionConditionalTransitionElements();
+		this.pStatemachineActionFieldSourceString = new StatemachineActionFieldSourceStringElements();
+		this.pStatemachineActionFieldSourceNumber = new StatemachineActionFieldSourceNumberElements();
+		this.pStatemachineActionFieldSourceEvaluate = new StatemachineActionFieldSourceEvaluateElements();
+		this.pStatemachineActionFieldSourceEvent = new StatemachineActionFieldSourceEventElements();
+		this.pStatemachineActionFieldSourceTranslate = new StatemachineActionFieldSourceTranslateElements();
+		this.pStatemachineActionFieldSourceDtoAttribute = new StatemachineActionFieldSourceDtoAttributeElements();
+		this.pStatemachineActionFieldSourceMore = new StatemachineActionFieldSourceMoreElements();
+		this.pStatemachineActionFieldSourceStringMore = new StatemachineActionFieldSourceStringMoreElements();
+		this.pStatemachineActionFieldSourceNumberMore = new StatemachineActionFieldSourceNumberMoreElements();
+		this.pStatemachineActionFieldSourceEvaluateMore = new StatemachineActionFieldSourceEvaluateMoreElements();
+		this.pStatemachineActionFieldSourceTranslateMore = new StatemachineActionFieldSourceTranslateMoreElements();
+		this.pStatemachineActionFieldGetMore = new StatemachineActionFieldGetMoreElements();
+		this.pStatemachineOperationMore = new StatemachineOperationMoreElements();
+		this.pStatemachineStorageRetrieveMore = new StatemachineStorageRetrieveMoreElements();
+		this.pStatemachineActionFieldSourceDtoAttributeMore = new StatemachineActionFieldSourceDtoAttributeMoreElements();
+		this.pStatemachineActionFieldConcatenation = new StatemachineActionFieldConcatenationElements();
+		this.pStatemachineOperationParameter = new StatemachineOperationParameterElements();
+		this.pStatemachineOperationParameterMore = new StatemachineOperationParameterMoreElements();
+		this.pStatemachineActionFieldSet = new StatemachineActionFieldSetElements();
+		this.pStatemachineActionFieldClear = new StatemachineActionFieldClearElements();
+		this.pStatemachineActionFieldGet = new StatemachineActionFieldGetElements();
+		this.pStatemachineActionFieldRemove = new StatemachineActionFieldRemoveElements();
+		this.pStatemachineControlVisibility = new StatemachineControlVisibilityElements();
+		this.pStatemachineActionItemVisible = new StatemachineActionItemVisibleElements();
+		this.pStatemachineActionItemInvisible = new StatemachineActionItemInvisibleElements();
+		this.pStatemachineActionButtonCaption = new StatemachineActionButtonCaptionElements();
+		this.pStatemachineActionButtonImage = new StatemachineActionButtonImageElements();
+		this.pStatemachineActionDTOFind = new StatemachineActionDTOFindElements();
+		this.pStatemachineActionScheduler = new StatemachineActionSchedulerElements();
+		this.pStatemachineControl = new StatemachineControlElements();
+		this.pStatemachineControlButton = new StatemachineControlButtonElements();
+		this.pStatemachineControlField = new StatemachineControlFieldElements();
+		this.pStatemachineControlDTO = new StatemachineControlDTOElements();
+		this.pStatemachineControlScheduler = new StatemachineControlSchedulerElements();
+		this.pStatemachinePeripheralDeviceLineDisplay = new StatemachinePeripheralDeviceLineDisplayElements();
+		this.pStatemachinePeripheralDevicePOSPrinter = new StatemachinePeripheralDevicePOSPrinterElements();
+		this.pStatemachinePeripheralDeviceCashDrawer = new StatemachinePeripheralDeviceCashDrawerElements();
+		this.pStatemachinePeripheralDevicePT = new StatemachinePeripheralDevicePTElements();
+		this.pStatemachineControlPeripheral = new StatemachineControlPeripheralElements();
+		this.pStatemachineControlButtonAttribute = new StatemachineControlButtonAttributeElements();
+		this.pStatemachineControlButtonAttributeEvent = new StatemachineControlButtonAttributeEventElements();
+		this.pStatemachineControlButtonAttributeEventKeyboard = new StatemachineControlButtonAttributeEventKeyboardElements();
+		this.pStatemachineControlButtonAttributeEventIdentity = new StatemachineControlButtonAttributeEventIdentityElements();
+		this.pStatemachineControlButtonAttributeEventEvent = new StatemachineControlButtonAttributeEventEventElements();
+		this.pStatemachineControlFieldAttribute = new StatemachineControlFieldAttributeElements();
+		this.pStatemachineControlFieldLayout = new StatemachineControlFieldLayoutElements();
+		this.pStatemachineControlDTOAttribute = new StatemachineControlDTOAttributeElements();
+		this.pStatemachineControlSchedulerAttribute = new StatemachineControlSchedulerAttributeElements();
+		this.pStatemachineDTOType = new StatemachineDTOTypeElements();
+		this.pStatemachineFieldType = new StatemachineFieldTypeElements();
+		this.unknownRuleStatemachineInternalType = new StatemachineInternalTypeElements();
+		this.unknownRuleStatemachineControlButtonEventType = new StatemachineControlButtonEventTypeElements();
+		this.unknownRuleStatemachineEvaluationType = new StatemachineEvaluationTypeElements();
+		this.unknownRuleStatemachineUserMessageType = new StatemachineUserMessageTypeElements();
+		this.unknownRuleStatemachineLineDisplayCursorType = new StatemachineLineDisplayCursorTypeElements();
+		this.unknownRuleStatemachineLineDisplayMarqueeType = new StatemachineLineDisplayMarqueeTypeElements();
+		this.unknownRuleStatemachineLineDisplayMarqueeFormat = new StatemachineLineDisplayMarqueeFormatElements();
+		this.unknownRuleStatemachineLineDisplayTextType = new StatemachineLineDisplayTextTypeElements();
+		this.unknownRuleStatemachineLineDisplayScrollTextType = new StatemachineLineDisplayScrollTextTypeElements();
+		this.unknownRuleStatemachinePOSPrinterBarcodeType = new StatemachinePOSPrinterBarcodeTypeElements();
+		this.pStatemachineImport = new StatemachineImportElements();
+		this.pStatemachineQualifiedNameWithWildCard = new StatemachineQualifiedNameWithWildCardElements();
+		this.pQualifiedName = new QualifiedNameElements();
+		this.pValidID = new ValidIDElements();
+		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
+		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
+		this.pSignedNumber = new SignedNumberElements();
+		this.pUnsignedNumber = new UnsignedNumberElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.xtext.statemachine.StatemachineDSL".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;
+	}
+
+	
+	//StatemachineModel:
+	//	packages+=StatemachinePackage*;
+	public StatemachineModelElements getStatemachineModelAccess() {
+		return pStatemachineModel;
+	}
+	
+	public ParserRule getStatemachineModelRule() {
+		return getStatemachineModelAccess().getRule();
+	}
+
+	//StatemachinePackage:
+	//	{StatemachinePackage} "package" name=QualifiedName ("{" imports+=StatemachineImport* statemachines+=Statemachine*
+	//	"}")?;
+	public StatemachinePackageElements getStatemachinePackageAccess() {
+		return pStatemachinePackage;
+	}
+	
+	public ParserRule getStatemachinePackageRule() {
+		return getStatemachinePackageAccess().getRule();
+	}
+
+	//Statemachine:
+	//	"statemachine" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("functiongroup"
+	//	functionGroup=[function::FunctionLibraryStatemachineGroup])? "initialState" initialState=[StatemachineState]
+	//	"initialEvent" initialEvent=[StatemachineEvent] ("events" ("{" events+=StatemachineEvent* "}")) ("controls" "{"
+	//	controls+=StatemachineControl* "}") ("states" "{" states+=StatemachineState* "}");
+	public StatemachineElements getStatemachineAccess() {
+		return pStatemachine;
+	}
+	
+	public ParserRule getStatemachineRule() {
+		return getStatemachineAccess().getRule();
+	}
+
+	//StatemachineEvent:
+	//	"event" name=ID;
+	public StatemachineEventElements getStatemachineEventAccess() {
+		return pStatemachineEvent;
+	}
+	
+	public ParserRule getStatemachineEventRule() {
+		return getStatemachineEventAccess().getRule();
+	}
+
+	//StatemachineState:
+	//	"state" name=ID "{" (("triggers" "{" triggers+=StatemachineTrigger* "}")? & ("identity"
+	//	identity=StatemachineOperation)? & ("keystroke" "@" keystroke=[StatemachineControlFieldAttribute]
+	//	(hasKeyOperation?="and" keyOperation=StatemachineOperation)?)?) "}";
+	public StatemachineStateElements getStatemachineStateAccess() {
+		return pStatemachineState;
+	}
+	
+	public ParserRule getStatemachineStateRule() {
+		return getStatemachineStateAccess().getRule();
+	}
+
+	//StatemachineTrigger:
+	//	{StatemachineTrigger} "trigger" triggers+=[StatemachineEvent]* ("guards" "{" guards+=StatemachineGuard* "}")?
+	//	"actions" (hasTransition?="transition" transition=[StatemachineState])? "{" actions+=StatemachineAction* "}";
+	public StatemachineTriggerElements getStatemachineTriggerAccess() {
+		return pStatemachineTrigger;
+	}
+	
+	public ParserRule getStatemachineTriggerRule() {
+		return getStatemachineTriggerAccess().getRule();
+	}
+
+	//StatemachineAction:
+	//	StatemachineActionPeripheralBlinkRate | StatemachineActionPeripheralClear | StatemachineActionPeripheralCreateWindow
+	//	| StatemachineActionPeripheralCursorType | StatemachineActionPeripheralDestroyWindow |
+	//	StatemachineActionPeripheralDeviceBrightness | StatemachineActionPeripheralDisplayBitmap |
+	//	StatemachineActionPeripheralDisplayText | StatemachineActionPeripheralDisplayTextAt |
+	//	StatemachineActionPeripheralInterCharacterWait | StatemachineActionPeripheralMarqueeFormat |
+	//	StatemachineActionPeripheralMarqueeRepeatWait | StatemachineActionPeripheralMarqueeType |
+	//	StatemachineActionPeripheralMarqueeUnitWait | StatemachineActionPeripheralScroll |
+	//	StatemachineActionPeripheralOpenDrawer | StatemachineActionPeripheralPrintBarcode |
+	//	StatemachineActionPeripheralPrintBitmap | StatemachineActionPeripheralPrintCut |
+	//	StatemachineActionPeripheralPrintNormal | StatemachineActionPeripheralPrintRegisterBitmap |
+	//	StatemachineActionPeripheralPTOpen | StatemachineActionPeripheralPTClose | StatemachineActionPeripheralPTAcknowledge
+	//	| //	StatemachineActionPeripheralPTPrepaidTopUp|
+	//	StatemachineActionPeripheralPTReversal | StatemachineActionPeripheralPTRegistration |
+	//	StatemachineActionPeripheralPTAuthorization | StatemachineActionPeripheralPrintReport | StatemachineActionFieldSet |
+	//	StatemachineActionFieldRemove | StatemachineActionItemVisible | StatemachineActionItemInvisible |
+	//	StatemachineActionFieldClear | StatemachineActionButtonCaption | StatemachineActionButtonImage |
+	//	StatemachineActionDTOFind | StatemachineStorage | StatemachineActionScheduler | StatemachineOperation |
+	//	StatemachineActionConditionalTransition;
+	public StatemachineActionElements getStatemachineActionAccess() {
+		return pStatemachineAction;
+	}
+	
+	public ParserRule getStatemachineActionRule() {
+		return getStatemachineActionAccess().getRule();
+	}
+
+	//// peripherals
+	////lineDisplay
+	//StatemachineActionPeripheralBlinkRate:
+	//	"blinkRate" blinkRate=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralBlinkRateElements getStatemachineActionPeripheralBlinkRateAccess() {
+		return pStatemachineActionPeripheralBlinkRate;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralBlinkRateRule() {
+		return getStatemachineActionPeripheralBlinkRateAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralClear:
+	//	"clearDevice" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralClearElements getStatemachineActionPeripheralClearAccess() {
+		return pStatemachineActionPeripheralClear;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralClearRule() {
+		return getStatemachineActionPeripheralClearAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralCreateWindow:
+	//	"createWindow" "row" viewportRow=INT "column" viewportColumn=INT "height" viewportHeight=INT "width"
+	//	viewportWidth=INT "windowHeight" windowHeight=INT "windowWidth" windowWidth=INT "@"
+	//	device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralCreateWindowElements getStatemachineActionPeripheralCreateWindowAccess() {
+		return pStatemachineActionPeripheralCreateWindow;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralCreateWindowRule() {
+		return getStatemachineActionPeripheralCreateWindowAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralCursorType:
+	//	"cursorType" cursorType=StatemachineLineDisplayCursorType "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralCursorTypeElements getStatemachineActionPeripheralCursorTypeAccess() {
+		return pStatemachineActionPeripheralCursorType;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralCursorTypeRule() {
+		return getStatemachineActionPeripheralCursorTypeAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralDestroyWindow:
+	//	"destroyWindow" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralDestroyWindowElements getStatemachineActionPeripheralDestroyWindowAccess() {
+		return pStatemachineActionPeripheralDestroyWindow;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralDestroyWindowRule() {
+		return getStatemachineActionPeripheralDestroyWindowAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralDeviceBrightness:
+	//	"deviceBrightness" brightness=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralDeviceBrightnessElements getStatemachineActionPeripheralDeviceBrightnessAccess() {
+		return pStatemachineActionPeripheralDeviceBrightness;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralDeviceBrightnessRule() {
+		return getStatemachineActionPeripheralDeviceBrightnessAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralDisplayBitmap:
+	//	"displayBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralDisplayBitmapElements getStatemachineActionPeripheralDisplayBitmapAccess() {
+		return pStatemachineActionPeripheralDisplayBitmap;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralDisplayBitmapRule() {
+		return getStatemachineActionPeripheralDisplayBitmapAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralDisplayText:
+	//	"displayText" "text" text=StatemachineActionFieldConcatenation (hasType?="type"
+	//	textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralDisplayTextElements getStatemachineActionPeripheralDisplayTextAccess() {
+		return pStatemachineActionPeripheralDisplayText;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralDisplayTextRule() {
+		return getStatemachineActionPeripheralDisplayTextAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralDisplayTextAt:
+	//	"displayTextAt" "text" text=StatemachineActionFieldConcatenation "row" row=INT "column" column=INT (hasType?="type"
+	//	textType=StatemachineLineDisplayTextType)? "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralDisplayTextAtElements getStatemachineActionPeripheralDisplayTextAtAccess() {
+		return pStatemachineActionPeripheralDisplayTextAt;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralDisplayTextAtRule() {
+		return getStatemachineActionPeripheralDisplayTextAtAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralInterCharacterWait:
+	//	"interCharacterWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralInterCharacterWaitElements getStatemachineActionPeripheralInterCharacterWaitAccess() {
+		return pStatemachineActionPeripheralInterCharacterWait;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralInterCharacterWaitRule() {
+		return getStatemachineActionPeripheralInterCharacterWaitAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralMarqueeFormat:
+	//	"marqueeFormat" format=StatemachineLineDisplayMarqueeFormat "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralMarqueeFormatElements getStatemachineActionPeripheralMarqueeFormatAccess() {
+		return pStatemachineActionPeripheralMarqueeFormat;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralMarqueeFormatRule() {
+		return getStatemachineActionPeripheralMarqueeFormatAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralMarqueeRepeatWait:
+	//	"marqueeRepeatWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralMarqueeRepeatWaitElements getStatemachineActionPeripheralMarqueeRepeatWaitAccess() {
+		return pStatemachineActionPeripheralMarqueeRepeatWait;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralMarqueeRepeatWaitRule() {
+		return getStatemachineActionPeripheralMarqueeRepeatWaitAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralMarqueeType:
+	//	"marqueeType" marqueeType=StatemachineLineDisplayMarqueeType "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralMarqueeTypeElements getStatemachineActionPeripheralMarqueeTypeAccess() {
+		return pStatemachineActionPeripheralMarqueeType;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralMarqueeTypeRule() {
+		return getStatemachineActionPeripheralMarqueeTypeAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralMarqueeUnitWait:
+	//	"marqueeUnitWait" wait=INT "@" device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralMarqueeUnitWaitElements getStatemachineActionPeripheralMarqueeUnitWaitAccess() {
+		return pStatemachineActionPeripheralMarqueeUnitWait;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralMarqueeUnitWaitRule() {
+		return getStatemachineActionPeripheralMarqueeUnitWaitAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralScroll:
+	//	"scroll" direction=StatemachineLineDisplayScrollTextType units=INT "@"
+	//	device=[StatemachinePeripheralDeviceLineDisplay];
+	public StatemachineActionPeripheralScrollElements getStatemachineActionPeripheralScrollAccess() {
+		return pStatemachineActionPeripheralScroll;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralScrollRule() {
+		return getStatemachineActionPeripheralScrollAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralOpenDrawer:
+	//	"openDrawer" device=[StatemachinePeripheralDeviceCashDrawer];
+	public StatemachineActionPeripheralOpenDrawerElements getStatemachineActionPeripheralOpenDrawerAccess() {
+		return pStatemachineActionPeripheralOpenDrawer;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralOpenDrawerRule() {
+		return getStatemachineActionPeripheralOpenDrawerAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintBarcode:
+	//	"printBarcode" "data" data=STRING "barcodeType" barcodeType=StatemachinePOSPrinterBarcodeType "@"
+	//	device=[StatemachinePeripheralDevicePOSPrinter];
+	public StatemachineActionPeripheralPrintBarcodeElements getStatemachineActionPeripheralPrintBarcodeAccess() {
+		return pStatemachineActionPeripheralPrintBarcode;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintBarcodeRule() {
+		return getStatemachineActionPeripheralPrintBarcodeAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintBitmap:
+	//	"printBitmap" "id" bitmapId=INT "@" device=[StatemachinePeripheralDevicePOSPrinter];
+	public StatemachineActionPeripheralPrintBitmapElements getStatemachineActionPeripheralPrintBitmapAccess() {
+		return pStatemachineActionPeripheralPrintBitmap;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintBitmapRule() {
+		return getStatemachineActionPeripheralPrintBitmapAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintCut:
+	//	"printCut" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter];
+	public StatemachineActionPeripheralPrintCutElements getStatemachineActionPeripheralPrintCutAccess() {
+		return pStatemachineActionPeripheralPrintCut;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintCutRule() {
+		return getStatemachineActionPeripheralPrintCutAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintNormal:
+	//	"printNormal" "text" text=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePOSPrinter];
+	public StatemachineActionPeripheralPrintNormalElements getStatemachineActionPeripheralPrintNormalAccess() {
+		return pStatemachineActionPeripheralPrintNormal;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintNormalRule() {
+		return getStatemachineActionPeripheralPrintNormalAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintRegisterBitmap:
+	//	"registerBitmap" "id" bitmapId=INT "name" name=STRING "@" device=[StatemachinePeripheralDevicePOSPrinter];
+	public StatemachineActionPeripheralPrintRegisterBitmapElements getStatemachineActionPeripheralPrintRegisterBitmapAccess() {
+		return pStatemachineActionPeripheralPrintRegisterBitmap;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintRegisterBitmapRule() {
+		return getStatemachineActionPeripheralPrintRegisterBitmapAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTOpen:
+	//	"paymentOpen" "host" host=StatemachineActionFieldConcatenation "port" port=StatemachineActionFieldConcatenation "@"
+	//	device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTOpenElements getStatemachineActionPeripheralPTOpenAccess() {
+		return pStatemachineActionPeripheralPTOpen;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTOpenRule() {
+		return getStatemachineActionPeripheralPTOpenAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTClose:
+	//	"paymentClose" "@" device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTCloseElements getStatemachineActionPeripheralPTCloseAccess() {
+		return pStatemachineActionPeripheralPTClose;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTCloseRule() {
+		return getStatemachineActionPeripheralPTCloseAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTAcknowledge:
+	//	"paymentAcknowledge" "@" device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTAcknowledgeElements getStatemachineActionPeripheralPTAcknowledgeAccess() {
+		return pStatemachineActionPeripheralPTAcknowledge;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTAcknowledgeRule() {
+		return getStatemachineActionPeripheralPTAcknowledgeAccess().getRule();
+	}
+
+	////StatemachineActionPeripheralPTBalanceRequest:
+	////	'balanceRequest' '@' device=[StatemachinePeripheralDevicePT];
+	////StatemachineActionPeripheralPTPrepaidTopUp:
+	////	'prepaidTopUp' 'of' source=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+	//StatemachineActionPeripheralPTReversal:
+	//	"paymentReversal" "withPassword" password=StatemachineActionFieldConcatenation "ofReceipt"
+	//	receipt=StatemachineActionFieldConcatenation "@" device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTReversalElements getStatemachineActionPeripheralPTReversalAccess() {
+		return pStatemachineActionPeripheralPTReversal;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTReversalRule() {
+		return getStatemachineActionPeripheralPTReversalAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTRegistration:
+	//	"paymentRegistration" "withPassword" password=StatemachineActionFieldConcatenation "configuration"
+	//	configuration=STRING "@" device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTRegistrationElements getStatemachineActionPeripheralPTRegistrationAccess() {
+		return pStatemachineActionPeripheralPTRegistration;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTRegistrationRule() {
+		return getStatemachineActionPeripheralPTRegistrationAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTAuthorization:
+	//	"paymentAuthorization" "ofAmount" amount=StatemachineActionFieldConcatenation "@"
+	//	device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTAuthorizationElements getStatemachineActionPeripheralPTAuthorizationAccess() {
+		return pStatemachineActionPeripheralPTAuthorization;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTAuthorizationRule() {
+		return getStatemachineActionPeripheralPTAuthorizationAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPTResponse:
+	//	"paymentResponse" "from" device=[StatemachinePeripheralDevicePT];
+	public StatemachineActionPeripheralPTResponseElements getStatemachineActionPeripheralPTResponseAccess() {
+		return pStatemachineActionPeripheralPTResponse;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPTResponseRule() {
+		return getStatemachineActionPeripheralPTResponseAccess().getRule();
+	}
+
+	//StatemachineActionPeripheralPrintReport:
+	//	"printReport" report=[report::Report] (hasFilter?="from" key=[StatemachineStorage])?;
+	public StatemachineActionPeripheralPrintReportElements getStatemachineActionPeripheralPrintReportAccess() {
+		return pStatemachineActionPeripheralPrintReport;
+	}
+	
+	public ParserRule getStatemachineActionPeripheralPrintReportRule() {
+		return getStatemachineActionPeripheralPrintReportAccess().getRule();
+	}
+
+	//// fields
+	//StatemachineActionFieldSource:
+	//	StatemachineActionFieldSourceString | StatemachineActionFieldSourceNumber | StatemachineActionFieldSourceEvaluate |
+	//	StatemachineActionFieldSourceTranslate | StatemachineActionFieldGet | StatemachineFunction |
+	//	StatemachineStorageRetrieve | StatemachineActionFieldSourceDtoAttribute | StatemachineActionFieldSourceEvent |
+	//	StatemachineActionPeripheralPTResponse;
+	public StatemachineActionFieldSourceElements getStatemachineActionFieldSourceAccess() {
+		return pStatemachineActionFieldSource;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceRule() {
+		return getStatemachineActionFieldSourceAccess().getRule();
+	}
+
+	//StatemachineOperation:
+	//	"operation" operation=[function::FunctionLibraryOperation] "(" first=StatemachineOperationParameter?
+	//	more+=StatemachineOperationParameterMore* ")";
+	public StatemachineOperationElements getStatemachineOperationAccess() {
+		return pStatemachineOperation;
+	}
+	
+	public ParserRule getStatemachineOperationRule() {
+		return getStatemachineOperationAccess().getRule();
+	}
+
+	//StatemachineGuard:
+	//	"guard" guard=[function::FunctionLibraryGuard] (hasOnFail?="onFail" "caption" onFailCaption=TRANSLATABLESTRING
+	//	"description" onFailDescription=TRANSLATABLESTRING "type" onFailType=StatemachineUserMessageType)?;
+	public StatemachineGuardElements getStatemachineGuardAccess() {
+		return pStatemachineGuard;
+	}
+	
+	public ParserRule getStatemachineGuardRule() {
+		return getStatemachineGuardAccess().getRule();
+	}
+
+	//StatemachineFunction:
+	//	"function" function=[function::FunctionLibraryFunction] "(" first=StatemachineOperationParameter?
+	//	more+=StatemachineOperationParameterMore* ")";
+	public StatemachineFunctionElements getStatemachineFunctionAccess() {
+		return pStatemachineFunction;
+	}
+	
+	public ParserRule getStatemachineFunctionRule() {
+		return getStatemachineFunctionAccess().getRule();
+	}
+
+	//StatemachineStorage:
+	//	"store" content=StatemachineActionFieldConcatenation "with" key=ID "." attribute=ID;
+	public StatemachineStorageElements getStatemachineStorageAccess() {
+		return pStatemachineStorage;
+	}
+	
+	public ParserRule getStatemachineStorageRule() {
+		return getStatemachineStorageAccess().getRule();
+	}
+
+	//StatemachineStorageRetrieve:
+	//	"retrieve" "from" key=ID "." attribute=ID;
+	public StatemachineStorageRetrieveElements getStatemachineStorageRetrieveAccess() {
+		return pStatemachineStorageRetrieve;
+	}
+	
+	public ParserRule getStatemachineStorageRetrieveRule() {
+		return getStatemachineStorageRetrieveAccess().getRule();
+	}
+
+	//StatemachineActionConditionalTransition:
+	//	"transition" transition=[StatemachineState] guard=StatemachineGuard "{" actions+=StatemachineAction* "}";
+	public StatemachineActionConditionalTransitionElements getStatemachineActionConditionalTransitionAccess() {
+		return pStatemachineActionConditionalTransition;
+	}
+	
+	public ParserRule getStatemachineActionConditionalTransitionRule() {
+		return getStatemachineActionConditionalTransitionAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceString:
+	//	text=STRING;
+	public StatemachineActionFieldSourceStringElements getStatemachineActionFieldSourceStringAccess() {
+		return pStatemachineActionFieldSourceString;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceStringRule() {
+		return getStatemachineActionFieldSourceStringAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceNumber:
+	//	value=SignedNumber;
+	public StatemachineActionFieldSourceNumberElements getStatemachineActionFieldSourceNumberAccess() {
+		return pStatemachineActionFieldSourceNumber;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceNumberRule() {
+		return getStatemachineActionFieldSourceNumberAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceEvaluate:
+	//	evaluationtype=StatemachineEvaluationType;
+	public StatemachineActionFieldSourceEvaluateElements getStatemachineActionFieldSourceEvaluateAccess() {
+		return pStatemachineActionFieldSourceEvaluate;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceEvaluateRule() {
+		return getStatemachineActionFieldSourceEvaluateAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceEvent:
+	//	{StatemachineActionFieldSourceEvent} "event";
+	public StatemachineActionFieldSourceEventElements getStatemachineActionFieldSourceEventAccess() {
+		return pStatemachineActionFieldSourceEvent;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceEventRule() {
+		return getStatemachineActionFieldSourceEventAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceTranslate:
+	//	"translate" text=TRANSLATABLESTRING;
+	public StatemachineActionFieldSourceTranslateElements getStatemachineActionFieldSourceTranslateAccess() {
+		return pStatemachineActionFieldSourceTranslate;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceTranslateRule() {
+		return getStatemachineActionFieldSourceTranslateAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceDtoAttribute:
+	//	"dto" dto=[StatemachineControlDTOAttribute] "." attribute=[dto::LDtoInheritedAttribute];
+	public StatemachineActionFieldSourceDtoAttributeElements getStatemachineActionFieldSourceDtoAttributeAccess() {
+		return pStatemachineActionFieldSourceDtoAttribute;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceDtoAttributeRule() {
+		return getStatemachineActionFieldSourceDtoAttributeAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceMore returns StatemachineActionFieldSource:
+	//	StatemachineActionFieldSourceStringMore | StatemachineActionFieldSourceNumberMore |
+	//	StatemachineActionFieldSourceEvaluateMore | StatemachineActionFieldSourceTranslateMore |
+	//	StatemachineActionFieldGetMore | StatemachineOperationMore | StatemachineStorageRetrieveMore |
+	//	StatemachineActionFieldSourceDtoAttributeMore;
+	public StatemachineActionFieldSourceMoreElements getStatemachineActionFieldSourceMoreAccess() {
+		return pStatemachineActionFieldSourceMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceMoreRule() {
+		return getStatemachineActionFieldSourceMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceStringMore returns StatemachineActionFieldSourceString:
+	//	{StatemachineActionFieldSourceString} "+" text=STRING;
+	public StatemachineActionFieldSourceStringMoreElements getStatemachineActionFieldSourceStringMoreAccess() {
+		return pStatemachineActionFieldSourceStringMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceStringMoreRule() {
+		return getStatemachineActionFieldSourceStringMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceNumberMore returns StatemachineActionFieldSourceNumber:
+	//	{StatemachineActionFieldSourceNumber} "+" value=SignedNumber;
+	public StatemachineActionFieldSourceNumberMoreElements getStatemachineActionFieldSourceNumberMoreAccess() {
+		return pStatemachineActionFieldSourceNumberMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceNumberMoreRule() {
+		return getStatemachineActionFieldSourceNumberMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceEvaluateMore returns StatemachineActionFieldSourceEvaluate:
+	//	{StatemachineActionFieldSourceEvaluate} "+" evaluationtype=StatemachineEvaluationType;
+	public StatemachineActionFieldSourceEvaluateMoreElements getStatemachineActionFieldSourceEvaluateMoreAccess() {
+		return pStatemachineActionFieldSourceEvaluateMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceEvaluateMoreRule() {
+		return getStatemachineActionFieldSourceEvaluateMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceTranslateMore returns StatemachineActionFieldSourceTranslate:
+	//	{StatemachineActionFieldSourceTranslate} "+" "translate" text=TRANSLATABLESTRING;
+	public StatemachineActionFieldSourceTranslateMoreElements getStatemachineActionFieldSourceTranslateMoreAccess() {
+		return pStatemachineActionFieldSourceTranslateMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceTranslateMoreRule() {
+		return getStatemachineActionFieldSourceTranslateMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldGetMore returns StatemachineActionFieldGet:
+	//	{StatemachineActionFieldGet} "+" "get" attribute=[StatemachineControlFieldAttribute];
+	public StatemachineActionFieldGetMoreElements getStatemachineActionFieldGetMoreAccess() {
+		return pStatemachineActionFieldGetMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldGetMoreRule() {
+		return getStatemachineActionFieldGetMoreAccess().getRule();
+	}
+
+	//StatemachineOperationMore returns StatemachineOperation:
+	//	{StatemachineOperation} "+" "operation" operation=[function::FunctionLibraryOperation];
+	public StatemachineOperationMoreElements getStatemachineOperationMoreAccess() {
+		return pStatemachineOperationMore;
+	}
+	
+	public ParserRule getStatemachineOperationMoreRule() {
+		return getStatemachineOperationMoreAccess().getRule();
+	}
+
+	//StatemachineStorageRetrieveMore returns StatemachineStorageRetrieve:
+	//	{StatemachineStorageRetrieve} "+" "retrieve" "from" key=ID "." attribute=ID;
+	public StatemachineStorageRetrieveMoreElements getStatemachineStorageRetrieveMoreAccess() {
+		return pStatemachineStorageRetrieveMore;
+	}
+	
+	public ParserRule getStatemachineStorageRetrieveMoreRule() {
+		return getStatemachineStorageRetrieveMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSourceDtoAttributeMore returns StatemachineActionFieldSourceDtoAttribute:
+	//	{StatemachineActionFieldSourceDtoAttribute} "+" "dto" dto=[StatemachineControlDTOAttribute] "."
+	//	attribute=[dto::LDtoInheritedAttribute];
+	public StatemachineActionFieldSourceDtoAttributeMoreElements getStatemachineActionFieldSourceDtoAttributeMoreAccess() {
+		return pStatemachineActionFieldSourceDtoAttributeMore;
+	}
+	
+	public ParserRule getStatemachineActionFieldSourceDtoAttributeMoreRule() {
+		return getStatemachineActionFieldSourceDtoAttributeMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldConcatenation:
+	//	first=StatemachineActionFieldSource more+=StatemachineActionFieldSourceMore*;
+	public StatemachineActionFieldConcatenationElements getStatemachineActionFieldConcatenationAccess() {
+		return pStatemachineActionFieldConcatenation;
+	}
+	
+	public ParserRule getStatemachineActionFieldConcatenationRule() {
+		return getStatemachineActionFieldConcatenationAccess().getRule();
+	}
+
+	//StatemachineOperationParameter:
+	//	source=StatemachineActionFieldConcatenation;
+	public StatemachineOperationParameterElements getStatemachineOperationParameterAccess() {
+		return pStatemachineOperationParameter;
+	}
+	
+	public ParserRule getStatemachineOperationParameterRule() {
+		return getStatemachineOperationParameterAccess().getRule();
+	}
+
+	//StatemachineOperationParameterMore returns StatemachineOperationParameter:
+	//	{StatemachineOperationParameter} "," source=StatemachineActionFieldConcatenation;
+	public StatemachineOperationParameterMoreElements getStatemachineOperationParameterMoreAccess() {
+		return pStatemachineOperationParameterMore;
+	}
+	
+	public ParserRule getStatemachineOperationParameterMoreRule() {
+		return getStatemachineOperationParameterMoreAccess().getRule();
+	}
+
+	//StatemachineActionFieldSet:
+	//	"set" source=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlFieldAttribute];
+	public StatemachineActionFieldSetElements getStatemachineActionFieldSetAccess() {
+		return pStatemachineActionFieldSet;
+	}
+	
+	public ParserRule getStatemachineActionFieldSetRule() {
+		return getStatemachineActionFieldSetAccess().getRule();
+	}
+
+	//StatemachineActionFieldClear:
+	//	"clear" attribute=[StatemachineControlFieldAttribute];
+	public StatemachineActionFieldClearElements getStatemachineActionFieldClearAccess() {
+		return pStatemachineActionFieldClear;
+	}
+	
+	public ParserRule getStatemachineActionFieldClearRule() {
+		return getStatemachineActionFieldClearAccess().getRule();
+	}
+
+	//StatemachineActionFieldGet:
+	//	"get" attribute=[StatemachineControlFieldAttribute];
+	public StatemachineActionFieldGetElements getStatemachineActionFieldGetAccess() {
+		return pStatemachineActionFieldGet;
+	}
+	
+	public ParserRule getStatemachineActionFieldGetRule() {
+		return getStatemachineActionFieldGetAccess().getRule();
+	}
+
+	//StatemachineActionFieldRemove:
+	//	"remove" attribute=[StatemachineControlFieldAttribute];
+	public StatemachineActionFieldRemoveElements getStatemachineActionFieldRemoveAccess() {
+		return pStatemachineActionFieldRemove;
+	}
+	
+	public ParserRule getStatemachineActionFieldRemoveRule() {
+		return getStatemachineActionFieldRemoveAccess().getRule();
+	}
+
+	//StatemachineControlVisibility:
+	//	StatemachineControlFieldAttribute | StatemachineControlFieldLayout | StatemachineControlButtonAttribute |
+	//	StatemachineControlButton;
+	public StatemachineControlVisibilityElements getStatemachineControlVisibilityAccess() {
+		return pStatemachineControlVisibility;
+	}
+	
+	public ParserRule getStatemachineControlVisibilityRule() {
+		return getStatemachineControlVisibilityAccess().getRule();
+	}
+
+	//StatemachineActionItemVisible:
+	//	"visible" attribute=[StatemachineControlVisibility];
+	public StatemachineActionItemVisibleElements getStatemachineActionItemVisibleAccess() {
+		return pStatemachineActionItemVisible;
+	}
+	
+	public ParserRule getStatemachineActionItemVisibleRule() {
+		return getStatemachineActionItemVisibleAccess().getRule();
+	}
+
+	//StatemachineActionItemInvisible:
+	//	"invisible" attribute=[StatemachineControlVisibility];
+	public StatemachineActionItemInvisibleElements getStatemachineActionItemInvisibleAccess() {
+		return pStatemachineActionItemInvisible;
+	}
+	
+	public ParserRule getStatemachineActionItemInvisibleRule() {
+		return getStatemachineActionItemInvisibleAccess().getRule();
+	}
+
+	//// buttons
+	//StatemachineActionButtonCaption:
+	//	"caption" caption=StatemachineActionFieldConcatenation "@" attribute=[StatemachineControlButtonAttribute];
+	public StatemachineActionButtonCaptionElements getStatemachineActionButtonCaptionAccess() {
+		return pStatemachineActionButtonCaption;
+	}
+	
+	public ParserRule getStatemachineActionButtonCaptionRule() {
+		return getStatemachineActionButtonCaptionAccess().getRule();
+	}
+
+	//StatemachineActionButtonImage:
+	//	"image" image=STRING "@" attribute=[StatemachineControlButtonAttribute];
+	public StatemachineActionButtonImageElements getStatemachineActionButtonImageAccess() {
+		return pStatemachineActionButtonImage;
+	}
+	
+	public ParserRule getStatemachineActionButtonImageRule() {
+		return getStatemachineActionButtonImageAccess().getRule();
+	}
+
+	//// dto
+	//StatemachineActionDTOFind:
+	//	"search" search=StatemachineActionFieldConcatenation "in" dto=[StatemachineControlDTOAttribute] "."
+	//	attribute=[dto::LDtoInheritedAttribute];
+	public StatemachineActionDTOFindElements getStatemachineActionDTOFindAccess() {
+		return pStatemachineActionDTOFind;
+	}
+	
+	public ParserRule getStatemachineActionDTOFindRule() {
+		return getStatemachineActionDTOFindAccess().getRule();
+	}
+
+	//StatemachineActionScheduler:
+	//	"schedule" scheduler=[StatemachineControlSchedulerAttribute];
+	public StatemachineActionSchedulerElements getStatemachineActionSchedulerAccess() {
+		return pStatemachineActionScheduler;
+	}
+	
+	public ParserRule getStatemachineActionSchedulerRule() {
+		return getStatemachineActionSchedulerAccess().getRule();
+	}
+
+	//StatemachineControl:
+	//	StatemachineControlButton | StatemachineControlField | StatemachineControlDTO | StatemachineControlScheduler |
+	//	StatemachineControlPeripheral;
+	public StatemachineControlElements getStatemachineControlAccess() {
+		return pStatemachineControl;
+	}
+	
+	public ParserRule getStatemachineControlRule() {
+		return getStatemachineControlAccess().getRule();
+	}
+
+	//StatemachineControlButton:
+	//	"keypad" name=ID "event" eventType=StatemachineControlButtonEventType "{"
+	//	buttons+=StatemachineControlButtonAttribute* "}";
+	public StatemachineControlButtonElements getStatemachineControlButtonAccess() {
+		return pStatemachineControlButton;
+	}
+	
+	public ParserRule getStatemachineControlButtonRule() {
+		return getStatemachineControlButtonAccess().getRule();
+	}
+
+	//StatemachineControlField:
+	//	"fields" name=ID "{" (fields+=StatemachineControlFieldAttribute* & layouts+=StatemachineControlFieldLayout*) "}";
+	public StatemachineControlFieldElements getStatemachineControlFieldAccess() {
+		return pStatemachineControlField;
+	}
+	
+	public ParserRule getStatemachineControlFieldRule() {
+		return getStatemachineControlFieldAccess().getRule();
+	}
+
+	//StatemachineControlDTO:
+	//	"dataProvider" name=ID "{" dtos+=StatemachineControlDTOAttribute* "}";
+	public StatemachineControlDTOElements getStatemachineControlDTOAccess() {
+		return pStatemachineControlDTO;
+	}
+	
+	public ParserRule getStatemachineControlDTORule() {
+		return getStatemachineControlDTOAccess().getRule();
+	}
+
+	//StatemachineControlScheduler:
+	//	"scheduler" name=ID "{" schedulers+=StatemachineControlSchedulerAttribute* "}";
+	public StatemachineControlSchedulerElements getStatemachineControlSchedulerAccess() {
+		return pStatemachineControlScheduler;
+	}
+	
+	public ParserRule getStatemachineControlSchedulerRule() {
+		return getStatemachineControlSchedulerAccess().getRule();
+	}
+
+	//StatemachinePeripheralDeviceLineDisplay:
+	//	"lineDisplay" name=ID;
+	public StatemachinePeripheralDeviceLineDisplayElements getStatemachinePeripheralDeviceLineDisplayAccess() {
+		return pStatemachinePeripheralDeviceLineDisplay;
+	}
+	
+	public ParserRule getStatemachinePeripheralDeviceLineDisplayRule() {
+		return getStatemachinePeripheralDeviceLineDisplayAccess().getRule();
+	}
+
+	//StatemachinePeripheralDevicePOSPrinter:
+	//	"posPrinter" name=ID;
+	public StatemachinePeripheralDevicePOSPrinterElements getStatemachinePeripheralDevicePOSPrinterAccess() {
+		return pStatemachinePeripheralDevicePOSPrinter;
+	}
+	
+	public ParserRule getStatemachinePeripheralDevicePOSPrinterRule() {
+		return getStatemachinePeripheralDevicePOSPrinterAccess().getRule();
+	}
+
+	//StatemachinePeripheralDeviceCashDrawer:
+	//	"cashDrawer" name=ID;
+	public StatemachinePeripheralDeviceCashDrawerElements getStatemachinePeripheralDeviceCashDrawerAccess() {
+		return pStatemachinePeripheralDeviceCashDrawer;
+	}
+	
+	public ParserRule getStatemachinePeripheralDeviceCashDrawerRule() {
+		return getStatemachinePeripheralDeviceCashDrawerAccess().getRule();
+	}
+
+	//StatemachinePeripheralDevicePT:
+	//	"payment" name=ID;
+	public StatemachinePeripheralDevicePTElements getStatemachinePeripheralDevicePTAccess() {
+		return pStatemachinePeripheralDevicePT;
+	}
+	
+	public ParserRule getStatemachinePeripheralDevicePTRule() {
+		return getStatemachinePeripheralDevicePTAccess().getRule();
+	}
+
+	//StatemachineControlPeripheral:
+	//	"peripheral" name=ID "{" lineDisplays+=StatemachinePeripheralDeviceLineDisplay*
+	//	posPrinters+=StatemachinePeripheralDevicePOSPrinter* cashDrawers+=StatemachinePeripheralDeviceCashDrawer*
+	//	paymentTerminals+=StatemachinePeripheralDevicePT* "}";
+	public StatemachineControlPeripheralElements getStatemachineControlPeripheralAccess() {
+		return pStatemachineControlPeripheral;
+	}
+	
+	public ParserRule getStatemachineControlPeripheralRule() {
+		return getStatemachineControlPeripheralAccess().getRule();
+	}
+
+	//StatemachineControlButtonAttribute:
+	//	"button" name=TRANSLATABLEID (hasImage?="image" image=STRING)? event=StatemachineControlButtonAttributeEvent;
+	public StatemachineControlButtonAttributeElements getStatemachineControlButtonAttributeAccess() {
+		return pStatemachineControlButtonAttribute;
+	}
+	
+	public ParserRule getStatemachineControlButtonAttributeRule() {
+		return getStatemachineControlButtonAttributeAccess().getRule();
+	}
+
+	//StatemachineControlButtonAttributeEvent:
+	//	StatemachineControlButtonAttributeEventKeyboard | StatemachineControlButtonAttributeEventIdentity |
+	//	StatemachineControlButtonAttributeEventEvent;
+	public StatemachineControlButtonAttributeEventElements getStatemachineControlButtonAttributeEventAccess() {
+		return pStatemachineControlButtonAttributeEvent;
+	}
+	
+	public ParserRule getStatemachineControlButtonAttributeEventRule() {
+		return getStatemachineControlButtonAttributeEventAccess().getRule();
+	}
+
+	//StatemachineControlButtonAttributeEventKeyboard:
+	//	{StatemachineControlButtonAttributeEventKeyboard} "key" keystroke=STRING;
+	public StatemachineControlButtonAttributeEventKeyboardElements getStatemachineControlButtonAttributeEventKeyboardAccess() {
+		return pStatemachineControlButtonAttributeEventKeyboard;
+	}
+	
+	public ParserRule getStatemachineControlButtonAttributeEventKeyboardRule() {
+		return getStatemachineControlButtonAttributeEventKeyboardAccess().getRule();
+	}
+
+	//StatemachineControlButtonAttributeEventIdentity:
+	//	{StatemachineControlButtonAttributeEventIdentity} "id" identity=INT;
+	public StatemachineControlButtonAttributeEventIdentityElements getStatemachineControlButtonAttributeEventIdentityAccess() {
+		return pStatemachineControlButtonAttributeEventIdentity;
+	}
+	
+	public ParserRule getStatemachineControlButtonAttributeEventIdentityRule() {
+		return getStatemachineControlButtonAttributeEventIdentityAccess().getRule();
+	}
+
+	//StatemachineControlButtonAttributeEventEvent:
+	//	{StatemachineControlButtonAttributeEventEvent} "event" event=[StatemachineEvent];
+	public StatemachineControlButtonAttributeEventEventElements getStatemachineControlButtonAttributeEventEventAccess() {
+		return pStatemachineControlButtonAttributeEventEvent;
+	}
+	
+	public ParserRule getStatemachineControlButtonAttributeEventEventRule() {
+		return getStatemachineControlButtonAttributeEventEventAccess().getRule();
+	}
+
+	//StatemachineControlFieldAttribute:
+	//	"field" name=TRANSLATABLEID "type" attributeType=StatemachineFieldType;
+	public StatemachineControlFieldAttributeElements getStatemachineControlFieldAttributeAccess() {
+		return pStatemachineControlFieldAttribute;
+	}
+	
+	public ParserRule getStatemachineControlFieldAttributeRule() {
+		return getStatemachineControlFieldAttributeAccess().getRule();
+	}
+
+	//StatemachineControlFieldLayout:
+	//	"layout" name=ID;
+	public StatemachineControlFieldLayoutElements getStatemachineControlFieldLayoutAccess() {
+		return pStatemachineControlFieldLayout;
+	}
+	
+	public ParserRule getStatemachineControlFieldLayoutRule() {
+		return getStatemachineControlFieldLayoutAccess().getRule();
+	}
+
+	//StatemachineControlDTOAttribute:
+	//	"dto" name=ID "type" attributeType=StatemachineDTOType (hasEvent?="event" event=[StatemachineEvent])?;
+	public StatemachineControlDTOAttributeElements getStatemachineControlDTOAttributeAccess() {
+		return pStatemachineControlDTOAttribute;
+	}
+	
+	public ParserRule getStatemachineControlDTOAttributeRule() {
+		return getStatemachineControlDTOAttributeAccess().getRule();
+	}
+
+	//StatemachineControlSchedulerAttribute:
+	//	"scheduler" name=ID "delay" delay=INT "send" event=[StatemachineEvent];
+	public StatemachineControlSchedulerAttributeElements getStatemachineControlSchedulerAttributeAccess() {
+		return pStatemachineControlSchedulerAttribute;
+	}
+	
+	public ParserRule getStatemachineControlSchedulerAttributeRule() {
+		return getStatemachineControlSchedulerAttributeAccess().getRule();
+	}
+
+	//StatemachineDTOType:
+	//	attributeType=[dto::LDto];
+	public StatemachineDTOTypeElements getStatemachineDTOTypeAccess() {
+		return pStatemachineDTOType;
+	}
+	
+	public ParserRule getStatemachineDTOTypeRule() {
+		return getStatemachineDTOTypeAccess().getRule();
+	}
+
+	//StatemachineFieldType:
+	//	attributeType=StatemachineInternalType;
+	public StatemachineFieldTypeElements getStatemachineFieldTypeAccess() {
+		return pStatemachineFieldType;
+	}
+	
+	public ParserRule getStatemachineFieldTypeRule() {
+		return getStatemachineFieldTypeAccess().getRule();
+	}
+
+	//enum StatemachineInternalType:
+	//	BOOLEAN="Boolean" | INTEGER="Integer" | LONG="Long" | DOUBLE="Double" | STRING="String" | DATE="Date" |
+	//	SUGGESTTEXT="SuggestText";
+	public StatemachineInternalTypeElements getStatemachineInternalTypeAccess() {
+		return unknownRuleStatemachineInternalType;
+	}
+	
+	public EnumRule getStatemachineInternalTypeRule() {
+		return getStatemachineInternalTypeAccess().getRule();
+	}
+
+	//enum StatemachineControlButtonEventType:
+	//	KEYBOARD="keyboard" | TRIGGER="trigger" | IDENTITY="identity";
+	public StatemachineControlButtonEventTypeElements getStatemachineControlButtonEventTypeAccess() {
+		return unknownRuleStatemachineControlButtonEventType;
+	}
+	
+	public EnumRule getStatemachineControlButtonEventTypeRule() {
+		return getStatemachineControlButtonEventTypeAccess().getRule();
+	}
+
+	//enum StatemachineEvaluationType:
+	//	IP_ADDRESS="getIPAddress" | NOW="getNow" | USER_AGENT_INFO="getUserAgentInfo" | IS_TOUCH_DEVICE="isTouchDevice" |
+	//	IS_HTTPS="isHttps" | BROWSER_LOCALE="getBrowserLocale" | USER_NAME="getUserName" | USER_PASSWORD="getUserPassword" |
+	//	USER_EMAIL="getUserEmail" | USER_POSITION="getUserPosition" | USER_PRTSERVICE="getUserPrintService" |
+	//	SCREEN_WIDTH="getSceenWidth" | SCREEN_HEIGHT="getScreenHeight" | TRIGGER="getTrigger";
+	public StatemachineEvaluationTypeElements getStatemachineEvaluationTypeAccess() {
+		return unknownRuleStatemachineEvaluationType;
+	}
+	
+	public EnumRule getStatemachineEvaluationTypeRule() {
+		return getStatemachineEvaluationTypeAccess().getRule();
+	}
+
+	//enum StatemachineUserMessageType:
+	//	HUMANIZED_MESSAGE="humanized" | WARNING_MESSAGE="warning" | ERROR_MESSAGE="error" | TRAY_NOTIFICATION="tray" |
+	//	ASSISTIVE_NOTIFICATION="assistive";
+	public StatemachineUserMessageTypeElements getStatemachineUserMessageTypeAccess() {
+		return unknownRuleStatemachineUserMessageType;
+	}
+	
+	public EnumRule getStatemachineUserMessageTypeRule() {
+		return getStatemachineUserMessageTypeAccess().getRule();
+	}
+
+	//enum StatemachineLineDisplayCursorType:
+	//	DISP_CT_NONE="none" | DISP_CT_FIXED="fixed" | DISP_CT_BLOCK="block" | DISP_CT_HALFBLOCK="halfblock" |
+	//	DISP_CT_UNDERLINE="underline" | DISP_CT_REVERSE="reverse" | DISP_CT_OTHER="other" | DISP_CT_BLINK="blink";
+	public StatemachineLineDisplayCursorTypeElements getStatemachineLineDisplayCursorTypeAccess() {
+		return unknownRuleStatemachineLineDisplayCursorType;
+	}
+	
+	public EnumRule getStatemachineLineDisplayCursorTypeRule() {
+		return getStatemachineLineDisplayCursorTypeAccess().getRule();
+	}
+
+	//enum StatemachineLineDisplayMarqueeType:
+	//	DISP_MT_NONE="none" | DISP_MT_UP="up" | DISP_MT_DOWN="down" | DISP_MT_LEFT="left" | DISP_MT_RIGHT="right" |
+	//	DISP_MT_INIT="init";
+	public StatemachineLineDisplayMarqueeTypeElements getStatemachineLineDisplayMarqueeTypeAccess() {
+		return unknownRuleStatemachineLineDisplayMarqueeType;
+	}
+	
+	public EnumRule getStatemachineLineDisplayMarqueeTypeRule() {
+		return getStatemachineLineDisplayMarqueeTypeAccess().getRule();
+	}
+
+	//enum StatemachineLineDisplayMarqueeFormat:
+	//	DISP_MF_WALK="walk" | DISP_MF_PLACE="place";
+	public StatemachineLineDisplayMarqueeFormatElements getStatemachineLineDisplayMarqueeFormatAccess() {
+		return unknownRuleStatemachineLineDisplayMarqueeFormat;
+	}
+	
+	public EnumRule getStatemachineLineDisplayMarqueeFormatRule() {
+		return getStatemachineLineDisplayMarqueeFormatAccess().getRule();
+	}
+
+	//enum StatemachineLineDisplayTextType:
+	//	DISP_DT_NORMAL="normal" | DISP_DT_BLINK="blink" | DISP_DT_REVERSE="reverse" | DISP_DT_BLINK_REVERSE="blinkreverse";
+	public StatemachineLineDisplayTextTypeElements getStatemachineLineDisplayTextTypeAccess() {
+		return unknownRuleStatemachineLineDisplayTextType;
+	}
+	
+	public EnumRule getStatemachineLineDisplayTextTypeRule() {
+		return getStatemachineLineDisplayTextTypeAccess().getRule();
+	}
+
+	//enum StatemachineLineDisplayScrollTextType:
+	//	DISP_ST_UP="up" | DISP_ST_DOWN="down" | DISP_ST_LEFT="left" | DISP_ST_RIGHT="right";
+	public StatemachineLineDisplayScrollTextTypeElements getStatemachineLineDisplayScrollTextTypeAccess() {
+		return unknownRuleStatemachineLineDisplayScrollTextType;
+	}
+	
+	public EnumRule getStatemachineLineDisplayScrollTextTypeRule() {
+		return getStatemachineLineDisplayScrollTextTypeAccess().getRule();
+	}
+
+	//enum StatemachinePOSPrinterBarcodeType:
+	//	PTR_BCS_UPCA="upca" | PTR_BCS_UPCE="upcb" | PTR_BCS_JAN8="jan8" | PTR_BCS_EAN8="ean8" | PTR_BCS_JAN13="jan13" |
+	//	PTR_BCS_EAN13="ean13" | PTR_BCS_TF="tf" | PTR_BCS_ITF="itf" | PTR_BCS_Codabar="codeabar" | PTR_BCS_Code39="code39" |
+	//	PTR_BCS_Code93="code93" | PTR_BCS_Code128="code128" | PTR_BCS_UPCA_S="upca_s" | PTR_BCS_UPCE_S="upce_s" |
+	//	PTR_BCS_UPCD1="upcd1" | PTR_BCS_UPCD2="upcd2" | PTR_BCS_UPCD3="upcd3" | PTR_BCS_UPCD4="upcd4" | PTR_BCS_UPCD5="upcd5"
+	//	| PTR_BCS_EAN8_S="ean8_s" | PTR_BCS_EAN13_S="ean13_s" | PTR_BCS_EAN128="ean128" | PTR_BCS_OCRA="orca" |
+	//	PTR_BCS_OCRB="ocrb" | PTR_BCS_Code128_Parsed="code128_parsed" | PTR_BCS_GS1DATABAR="gs1databar" |
+	//	PTR_BCS_GS1DATABAR_E="gs1databar_e" | PTR_BCS_GS1DATABAR_S="gs1databar_s" | PTR_BCS_GS1DATABAR_E_S="gs1databar_e_s" |
+	//	PTR_BCS_PDF417="pdf417" | PTR_BCS_MAXICODE="maxicode" | PTR_BCS_DATAMATRIX="datamatrix" | PTR_BCS_QRCODE="qrcode" |
+	//	PTR_BCS_UQRCODE="uqrcode" | PTR_BCS_AZTEC="aztec" | PTR_BCS_UPDF417="updf417";
+	public StatemachinePOSPrinterBarcodeTypeElements getStatemachinePOSPrinterBarcodeTypeAccess() {
+		return unknownRuleStatemachinePOSPrinterBarcodeType;
+	}
+	
+	public EnumRule getStatemachinePOSPrinterBarcodeTypeRule() {
+		return getStatemachinePOSPrinterBarcodeTypeAccess().getRule();
+	}
+
+	//StatemachineImport returns types::LImport:
+	//	"import" importedNamespace=StatemachineQualifiedNameWithWildCard;
+	public StatemachineImportElements getStatemachineImportAccess() {
+		return pStatemachineImport;
+	}
+	
+	public ParserRule getStatemachineImportRule() {
+		return getStatemachineImportAccess().getRule();
+	}
+
+	//StatemachineQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public StatemachineQualifiedNameWithWildCardElements getStatemachineQualifiedNameWithWildCardAccess() {
+		return pStatemachineQualifiedNameWithWildCard;
+	}
+	
+	public ParserRule getStatemachineQualifiedNameWithWildCardRule() {
+		return getStatemachineQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public QualifiedNameElements getQualifiedNameAccess() {
+		return pQualifiedName;
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public ValidIDElements getValidIDAccess() {
+		return pValidID;
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().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();
+	}
+
+	//SignedNumber returns ecore::EDouble:
+	//	"-"? UnsignedNumber;
+	public SignedNumberElements getSignedNumberAccess() {
+		return pSignedNumber;
+	}
+	
+	public ParserRule getSignedNumberRule() {
+		return getSignedNumberAccess().getRule();
+	}
+
+	//UnsignedNumber returns ecore::EDouble:
+	//	INT ("." INT)?;
+	public UnsignedNumberElements getUnsignedNumberAccess() {
+		return pUnsignedNumber;
+	}
+	
+	public ParserRule getUnsignedNumberRule() {
+		return getUnsignedNumberAccess().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();
+	}
+
+	//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();
+	}
+
+	//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.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/validation/AbstractStatemachineDSLValidator.java b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/validation/AbstractStatemachineDSLValidator.java
new file mode 100644
index 0000000..01dd6c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src-gen/org/eclipse/osbp/xtext/statemachine/validation/AbstractStatemachineDSLValidator.java
@@ -0,0 +1,33 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractStatemachineDSLValidator 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/statemachine/StatemachineDSL"));
+	    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.statemachine/src/org/eclipse/osbp/xtext/statemachine/Activator.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/Activator.java
new file mode 100644
index 0000000..89ccbd5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/Activator.java
@@ -0,0 +1,47 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.statemachine;
+
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		Loginfo li = new Loginfo();
+		li.print( Activator.class.getCanonicalName(), Activator.class.getClassLoader());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/GenerateStatemachineDSL.mwe2 b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/GenerateStatemachineDSL.mwe2
new file mode 100644
index 0000000..a42f7f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/GenerateStatemachineDSL.mwe2
@@ -0,0 +1,175 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+module org.eclipse.osbp.xtext.statemachine.GenerateStatemachineDSL
+
+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.statemachine"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSL.xtext"
+var fileExtensions = "statemachine"
+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.statemachine/model/StatemachineDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage"
+		
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage"
+
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.reportdsl/model/ReportDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage"
+
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+
+		registerGenModelFile = "platform:/resource/org.eclipse.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 = 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 {
+				// @see https://github.com/osbp/osbp-doc/blob/master/org.eclipse.osbp.doc.dsl/src/org.eclipse.osbp/doc/dsl/grammar/GenerateOSBPDocGrammar.mwe2
+    		  	options = {
+    		//      backtrack = true
+    				classSplitting=true
+    				fieldsPerClass="100"
+    				methodsPerClass="100"
+    		  	}
+    		}
+    
+    		// generates junit test support classes into Generator#pathTestProject
+    		fragment = junit.Junit4Fragment auto-inject {}
+    
+    		// rename refactoring
+    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
+    
+    		// provides the necessary bindings for java types integration
+    		fragment = types.TypesGeneratorFragment auto-inject {}
+    
+    		// generates the required bindings only if the grammar inherits from Xbase
+    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
+    
+    		// provides a preference page for template proposals
+    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
+    
+    		// provides a compare view
+    		fragment = compare.CompareFragment auto-inject {}
+    		
+    		// parse grammar and generate i18n grammar
+            fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
+    	}
+    }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSL.xtext b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSL.xtext
new file mode 100644
index 0000000..9bb4c36
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSL.xtext
@@ -0,0 +1,529 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2015 - 2017 - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 	   Jörg Riegel - ongoing development
+ * 
+ */
+grammar org.eclipse.osbp.xtext.statemachine.StatemachineDSL
+with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+import "http://osbp.eclipse.org/xtext/statemachine/StatemachineDSL"
+import "http://osbp.eclipse.org/dsl/dto/v1" as dto
+import "http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL" as function
+import "http://osbp.eclipse.org/xtext/reportdsl/ReportDSL" as report
+import "http://osbp.eclipse.org/dsl/common/types/v1" as types
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+StatemachineModel:
+	packages+=StatemachinePackage*;
+
+StatemachinePackage:
+	{StatemachinePackage} 'package' name=QualifiedName
+	('{' (imports+=StatemachineImport)* (statemachines+=Statemachine)* '}')?;
+
+Statemachine:
+	'statemachine' name=ID (description?='described by' descriptionValue=TRANSLATABLESTRING)?
+	('functiongroup' functionGroup=[function::FunctionLibraryStatemachineGroup])?
+	'initialState' initialState=[StatemachineState]
+	'initialEvent' initialEvent=[StatemachineEvent]
+	('events' ('{'
+	(events+=StatemachineEvent)*
+	'}'))
+	('controls' '{'
+	(controls+=StatemachineControl)*
+	'}')
+	('states' '{'
+	(states+=StatemachineState)*
+	'}');
+
+StatemachineEvent:
+	'event' name=ID;
+
+StatemachineState:
+	'state' name=ID
+	'{'
+	(('triggers' '{' (triggers+=StatemachineTrigger)* '}')? &
+	('identity' identity=StatemachineOperation)? &
+	('keystroke' '@' keystroke=[StatemachineControlFieldAttribute] (hasKeyOperation?='and' keyOperation=StatemachineOperation)?)?)
+	'}';
+
+StatemachineTrigger:
+	{StatemachineTrigger}
+	'trigger' (triggers+=[StatemachineEvent])* 
+	('guards' '{' (guards+=StatemachineGuard)* '}')?
+	'actions' (hasTransition?='transition' transition=[StatemachineState])? '{' (actions+=StatemachineAction)* '}';
+
+StatemachineAction:
+	StatemachineActionPeripheralBlinkRate| 
+	StatemachineActionPeripheralClear|
+	StatemachineActionPeripheralCreateWindow|
+	StatemachineActionPeripheralCursorType|
+	StatemachineActionPeripheralDestroyWindow|
+	StatemachineActionPeripheralDeviceBrightness|
+	StatemachineActionPeripheralDisplayBitmap|
+	StatemachineActionPeripheralDisplayText|
+	StatemachineActionPeripheralDisplayTextAt|
+	StatemachineActionPeripheralInterCharacterWait|
+	StatemachineActionPeripheralMarqueeFormat|
+	StatemachineActionPeripheralMarqueeRepeatWait|
+	StatemachineActionPeripheralMarqueeType|
+	StatemachineActionPeripheralMarqueeUnitWait|
+	StatemachineActionPeripheralScroll|
+	StatemachineActionPeripheralOpenDrawer|
+	StatemachineActionPeripheralPrintBarcode|
+	StatemachineActionPeripheralPrintBitmap|
+	StatemachineActionPeripheralPrintCut|
+	StatemachineActionPeripheralPrintNormal|
+	StatemachineActionPeripheralPrintRegisterBitmap|
+	StatemachineActionPeripheralPTOpen|
+	StatemachineActionPeripheralPTClose|
+	StatemachineActionPeripheralPTAcknowledge|
+//	StatemachineActionPeripheralPTPrepaidTopUp|
+	StatemachineActionPeripheralPTReversal|
+	StatemachineActionPeripheralPTRegistration|
+	StatemachineActionPeripheralPTAuthorization|
+	StatemachineActionPeripheralPrintReport|
+	StatemachineActionFieldSet|
+	StatemachineActionFieldRemove|
+	StatemachineActionItemVisible|
+	StatemachineActionItemInvisible|
+	StatemachineActionFieldClear|
+	StatemachineActionButtonCaption|
+	StatemachineActionButtonImage|
+	StatemachineActionDTOFind|
+	StatemachineStorage|
+	StatemachineActionScheduler|
+	StatemachineOperation|
+	StatemachineActionConditionalTransition;
+// peripherals
+//lineDisplay
+StatemachineActionPeripheralBlinkRate:
+	'blinkRate' blinkRate=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralClear:
+	'clearDevice' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralCreateWindow:
+	'createWindow' 
+	'row' viewportRow=INT
+	'column' viewportColumn=INT
+	'height' viewportHeight=INT
+	'width' viewportWidth=INT
+	'windowHeight' windowHeight=INT
+	'windowWidth' windowWidth=INT
+	'@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralCursorType:
+	'cursorType' cursorType=StatemachineLineDisplayCursorType '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralDestroyWindow:
+	'destroyWindow' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralDeviceBrightness:
+	'deviceBrightness' brightness=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralDisplayBitmap:
+	'displayBitmap' 'id' bitmapId=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralDisplayText:
+	'displayText' 'text' text=StatemachineActionFieldConcatenation (hasType?='type' textType=StatemachineLineDisplayTextType)? '@' device=[StatemachinePeripheralDeviceLineDisplay] ;
+StatemachineActionPeripheralDisplayTextAt:
+	'displayTextAt' 'text' text=StatemachineActionFieldConcatenation 'row' row=INT 'column' column=INT (hasType?='type' textType=StatemachineLineDisplayTextType)? '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralInterCharacterWait:
+	'interCharacterWait' wait=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralMarqueeFormat:
+	'marqueeFormat' format=StatemachineLineDisplayMarqueeFormat '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralMarqueeRepeatWait:
+	'marqueeRepeatWait' wait=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralMarqueeType:
+	'marqueeType' marqueeType=StatemachineLineDisplayMarqueeType '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralMarqueeUnitWait:	
+	'marqueeUnitWait' wait=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralScroll:	
+	'scroll' direction=StatemachineLineDisplayScrollTextType units=INT '@' device=[StatemachinePeripheralDeviceLineDisplay];
+StatemachineActionPeripheralOpenDrawer:				 
+	'openDrawer' device=[StatemachinePeripheralDeviceCashDrawer];
+StatemachineActionPeripheralPrintBarcode:			
+	'printBarcode' 'data' data=STRING 'barcodeType' barcodeType=StatemachinePOSPrinterBarcodeType '@' device=[StatemachinePeripheralDevicePOSPrinter];
+StatemachineActionPeripheralPrintBitmap:
+	'printBitmap' 'id' bitmapId=INT '@' device=[StatemachinePeripheralDevicePOSPrinter];
+StatemachineActionPeripheralPrintCut:
+	'printCut' 'text' text=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePOSPrinter];
+StatemachineActionPeripheralPrintNormal:
+	'printNormal' 'text' text=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePOSPrinter];
+StatemachineActionPeripheralPrintRegisterBitmap:
+	'registerBitmap' 'id' bitmapId=INT 'name' name=STRING '@' device=[StatemachinePeripheralDevicePOSPrinter];
+StatemachineActionPeripheralPTOpen:
+	'paymentOpen' 'host' host=StatemachineActionFieldConcatenation 'port' port=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTClose:
+	'paymentClose' '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTAcknowledge:
+	'paymentAcknowledge' '@' device=[StatemachinePeripheralDevicePT];
+//StatemachineActionPeripheralPTBalanceRequest:
+//	'balanceRequest' '@' device=[StatemachinePeripheralDevicePT];
+//StatemachineActionPeripheralPTPrepaidTopUp:
+//	'prepaidTopUp' 'of' source=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTReversal:
+	'paymentReversal' 'withPassword' password=StatemachineActionFieldConcatenation 'ofReceipt' receipt=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTRegistration:
+	'paymentRegistration' 'withPassword' password=StatemachineActionFieldConcatenation 'configuration' configuration=STRING '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTAuthorization:
+	'paymentAuthorization' 'ofAmount' amount=StatemachineActionFieldConcatenation '@' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPTResponse:
+	'paymentResponse' 'from' device=[StatemachinePeripheralDevicePT];
+StatemachineActionPeripheralPrintReport:
+	'printReport' report=[report::Report] (hasFilter?='from' key=[StatemachineStorage])?;
+// fields
+StatemachineActionFieldSource:
+	StatemachineActionFieldSourceString|
+	StatemachineActionFieldSourceNumber|
+	StatemachineActionFieldSourceEvaluate|
+	StatemachineActionFieldSourceTranslate|
+	StatemachineActionFieldGet|
+	StatemachineFunction|
+	StatemachineStorageRetrieve|
+	StatemachineActionFieldSourceDtoAttribute|
+	StatemachineActionFieldSourceEvent|
+	StatemachineActionPeripheralPTResponse;
+
+StatemachineOperation:
+	'operation' operation=[function::FunctionLibraryOperation] 
+	'(' (first=StatemachineOperationParameter)? (more+=StatemachineOperationParameterMore)* ')';
+	
+StatemachineGuard:
+	'guard' guard = [function::FunctionLibraryGuard]
+	(hasOnFail?='onFail' 'caption' onFailCaption=TRANSLATABLESTRING 
+	'description' onFailDescription=TRANSLATABLESTRING 'type' onFailType=StatemachineUserMessageType)?;
+	
+StatemachineFunction:
+	'function' function=[function::FunctionLibraryFunction] 
+	'(' (first=StatemachineOperationParameter)? (more+=StatemachineOperationParameterMore)* ')';
+	
+StatemachineStorage:
+	'store' content=StatemachineActionFieldConcatenation 'with' key=ID '.' attribute=ID;
+	
+StatemachineStorageRetrieve:
+	'retrieve' 'from' key=ID '.' attribute=ID;
+	
+StatemachineActionConditionalTransition:
+	'transition' transition=[StatemachineState] guard=StatemachineGuard '{' (actions+=StatemachineAction)* '}';
+	
+StatemachineActionFieldSourceString:
+	text=STRING;
+	
+StatemachineActionFieldSourceNumber:
+	value=SignedNumber;
+	
+StatemachineActionFieldSourceEvaluate:
+	evaluationtype=StatemachineEvaluationType;
+	
+StatemachineActionFieldSourceEvent:
+	{StatemachineActionFieldSourceEvent} 'event';
+	
+StatemachineActionFieldSourceTranslate:
+	'translate' text=TRANSLATABLESTRING;
+
+StatemachineActionFieldSourceDtoAttribute:
+	'dto' dto=[StatemachineControlDTOAttribute]'.'attribute=[dto::LDtoInheritedAttribute];
+	
+StatemachineActionFieldSourceMore returns StatemachineActionFieldSource:
+	StatemachineActionFieldSourceStringMore|
+	StatemachineActionFieldSourceNumberMore|
+	StatemachineActionFieldSourceEvaluateMore|
+	StatemachineActionFieldSourceTranslateMore|
+	StatemachineActionFieldGetMore|
+	StatemachineOperationMore|
+	StatemachineStorageRetrieveMore|
+	StatemachineActionFieldSourceDtoAttributeMore;
+
+StatemachineActionFieldSourceStringMore returns StatemachineActionFieldSourceString:
+	{StatemachineActionFieldSourceString} '+' text=STRING;
+	
+StatemachineActionFieldSourceNumberMore returns StatemachineActionFieldSourceNumber:
+	{StatemachineActionFieldSourceNumber} '+' value=SignedNumber;
+	
+StatemachineActionFieldSourceEvaluateMore returns StatemachineActionFieldSourceEvaluate:
+	{StatemachineActionFieldSourceEvaluate} '+' evaluationtype=StatemachineEvaluationType;
+	
+StatemachineActionFieldSourceTranslateMore returns StatemachineActionFieldSourceTranslate:
+	{StatemachineActionFieldSourceTranslate} '+' 'translate' text=TRANSLATABLESTRING;
+
+StatemachineActionFieldGetMore returns StatemachineActionFieldGet:
+	{StatemachineActionFieldGet} '+' 'get' attribute=[StatemachineControlFieldAttribute];
+
+StatemachineOperationMore returns StatemachineOperation:
+	{StatemachineOperation} '+' 'operation' operation=[function::FunctionLibraryOperation];
+
+StatemachineStorageRetrieveMore returns StatemachineStorageRetrieve:
+	{StatemachineStorageRetrieve} '+' 'retrieve' 'from' key=ID '.' attribute=ID;
+
+StatemachineActionFieldSourceDtoAttributeMore returns StatemachineActionFieldSourceDtoAttribute:
+	{StatemachineActionFieldSourceDtoAttribute} '+' 'dto' dto=[StatemachineControlDTOAttribute]'.'attribute=[dto::LDtoInheritedAttribute];
+
+StatemachineActionFieldConcatenation:
+	first=StatemachineActionFieldSource (more+=StatemachineActionFieldSourceMore)*;
+	
+StatemachineOperationParameter:
+	source=StatemachineActionFieldConcatenation;
+	
+StatemachineOperationParameterMore returns StatemachineOperationParameter:
+	{StatemachineOperationParameter} ',' source=StatemachineActionFieldConcatenation;
+
+StatemachineActionFieldSet:
+	'set' source=StatemachineActionFieldConcatenation '@' attribute=[StatemachineControlFieldAttribute];
+	
+StatemachineActionFieldClear:
+	'clear' attribute=[StatemachineControlFieldAttribute];
+	
+StatemachineActionFieldGet:
+	'get' attribute=[StatemachineControlFieldAttribute];
+	
+StatemachineActionFieldRemove:
+	'remove' attribute=[StatemachineControlFieldAttribute];
+	
+StatemachineControlVisibility:
+	StatemachineControlFieldAttribute|
+	StatemachineControlFieldLayout|
+	StatemachineControlButtonAttribute|
+	StatemachineControlButton;
+	
+StatemachineActionItemVisible:
+	'visible' attribute=[StatemachineControlVisibility];
+	
+StatemachineActionItemInvisible:
+	'invisible' attribute=[StatemachineControlVisibility];
+	
+// buttons
+StatemachineActionButtonCaption:
+	'caption' caption=StatemachineActionFieldConcatenation '@' attribute=[StatemachineControlButtonAttribute];
+	
+StatemachineActionButtonImage:
+	'image' image=STRING '@' attribute=[StatemachineControlButtonAttribute];
+	
+// dto
+StatemachineActionDTOFind:
+	'search' search=StatemachineActionFieldConcatenation
+	'in' dto=[StatemachineControlDTOAttribute]'.'attribute=[dto::LDtoInheritedAttribute];
+
+StatemachineActionScheduler:
+	'schedule' scheduler=[StatemachineControlSchedulerAttribute];
+
+StatemachineControl:
+	StatemachineControlButton|StatemachineControlField|StatemachineControlDTO|StatemachineControlScheduler|StatemachineControlPeripheral;
+	
+StatemachineControlButton:
+	'keypad' name=ID 'event' eventType=StatemachineControlButtonEventType '{'
+	(buttons+=StatemachineControlButtonAttribute)*
+	'}';
+
+StatemachineControlField:
+	'fields' name=ID '{'
+	((fields+=StatemachineControlFieldAttribute)* &
+	(layouts+=StatemachineControlFieldLayout)*)
+	'}';
+
+StatemachineControlDTO:
+	'dataProvider' name=ID '{'
+	(dtos+=StatemachineControlDTOAttribute)*
+	'}';
+
+StatemachineControlScheduler:
+	'scheduler' name=ID '{'
+	(schedulers+=StatemachineControlSchedulerAttribute)*
+	'}';
+
+StatemachinePeripheralDeviceLineDisplay:
+	'lineDisplay' name=ID;
+
+StatemachinePeripheralDevicePOSPrinter:
+	'posPrinter' name=ID;
+
+StatemachinePeripheralDeviceCashDrawer:
+	'cashDrawer' name=ID;
+	
+StatemachinePeripheralDevicePT:
+	'payment' name=ID;
+	
+StatemachineControlPeripheral:
+	'peripheral' name=ID '{'
+	(lineDisplays+=StatemachinePeripheralDeviceLineDisplay)*
+	(posPrinters+=StatemachinePeripheralDevicePOSPrinter)*
+	(cashDrawers+=StatemachinePeripheralDeviceCashDrawer)*
+	(paymentTerminals+=StatemachinePeripheralDevicePT)*
+	'}';
+
+StatemachineControlButtonAttribute:
+	'button' name=TRANSLATABLEID
+	(hasImage?='image' image=STRING)?
+	event=StatemachineControlButtonAttributeEvent;
+
+StatemachineControlButtonAttributeEvent:
+	StatemachineControlButtonAttributeEventKeyboard|
+	StatemachineControlButtonAttributeEventIdentity|
+	StatemachineControlButtonAttributeEventEvent;
+
+StatemachineControlButtonAttributeEventKeyboard:
+	{StatemachineControlButtonAttributeEventKeyboard} 'key' keystroke=STRING;
+	
+StatemachineControlButtonAttributeEventIdentity:
+	{StatemachineControlButtonAttributeEventIdentity} 'id' identity=INT;
+	
+StatemachineControlButtonAttributeEventEvent:
+	{StatemachineControlButtonAttributeEventEvent} 'event' event=[StatemachineEvent];
+
+StatemachineControlFieldAttribute:
+	'field' name=TRANSLATABLEID
+	'type' attributeType=StatemachineFieldType;
+
+StatemachineControlFieldLayout:
+	'layout' name=ID;
+	
+StatemachineControlDTOAttribute:
+	'dto' name=ID
+	'type' attributeType=StatemachineDTOType
+	(hasEvent?='event' event=[StatemachineEvent])?;
+
+StatemachineControlSchedulerAttribute:
+	'scheduler' name=ID
+	'delay' delay=INT
+	'send' event=[StatemachineEvent];
+
+StatemachineDTOType:
+	attributeType=[dto::LDto];
+
+StatemachineFieldType:
+	attributeType=StatemachineInternalType;
+
+enum StatemachineInternalType:
+	BOOLEAN		= 'Boolean'| 
+	INTEGER		= 'Integer'| 
+	LONG		= 'Long'|
+	DOUBLE		= 'Double'|
+	STRING		= 'String'| 
+	DATE		= 'Date'| 
+	SUGGESTTEXT	= 'SuggestText'; 
+
+enum StatemachineControlButtonEventType:
+	KEYBOARD= 'keyboard'|
+	TRIGGER	= 'trigger'|
+	IDENTITY= 'identity';
+
+enum StatemachineEvaluationType:
+	IP_ADDRESS 		= 'getIPAddress'|
+	NOW 			= 'getNow'|
+	USER_AGENT_INFO = 'getUserAgentInfo'|
+	IS_TOUCH_DEVICE = 'isTouchDevice'|
+	IS_HTTPS 		= 'isHttps'|
+	BROWSER_LOCALE 	= 'getBrowserLocale'|
+	USER_NAME		= 'getUserName'|
+	USER_PASSWORD	= 'getUserPassword'|
+	USER_EMAIL		= 'getUserEmail'|
+	USER_POSITION	= 'getUserPosition'|
+	USER_PRTSERVICE	= 'getUserPrintService'|
+	SCREEN_WIDTH 	= 'getSceenWidth'|
+	SCREEN_HEIGHT 	= 'getScreenHeight'|
+	TRIGGER			= 'getTrigger';
+
+enum StatemachineUserMessageType:
+	HUMANIZED_MESSAGE		= 'humanized'|
+	WARNING_MESSAGE			= 'warning'|
+	ERROR_MESSAGE			= 'error'|
+	TRAY_NOTIFICATION		= 'tray'|
+	ASSISTIVE_NOTIFICATION	= 'assistive';
+
+enum StatemachineLineDisplayCursorType:
+	DISP_CT_NONE		= 'none'|     
+	DISP_CT_FIXED    	= 'fixed'|
+	DISP_CT_BLOCK    	= 'block'|
+	DISP_CT_HALFBLOCK	= 'halfblock'|
+	DISP_CT_UNDERLINE	= 'underline'|
+	DISP_CT_REVERSE  	= 'reverse'|
+	DISP_CT_OTHER    	= 'other'|
+	DISP_CT_BLINK		= 'blink';
+
+enum StatemachineLineDisplayMarqueeType:
+	DISP_MT_NONE         = 'none'|
+	DISP_MT_UP           = 'up'|
+	DISP_MT_DOWN         = 'down'|
+	DISP_MT_LEFT         = 'left'|
+	DISP_MT_RIGHT        = 'right'|
+	DISP_MT_INIT         = 'init';
+
+enum StatemachineLineDisplayMarqueeFormat:
+	DISP_MF_WALK         = 'walk'|
+	DISP_MF_PLACE        = 'place';
+
+enum StatemachineLineDisplayTextType:
+	DISP_DT_NORMAL        = 'normal'|
+	DISP_DT_BLINK         = 'blink'|
+	DISP_DT_REVERSE       = 'reverse'|
+	DISP_DT_BLINK_REVERSE = 'blinkreverse';
+
+enum StatemachineLineDisplayScrollTextType:
+	DISP_ST_UP           = 'up'|
+	DISP_ST_DOWN         = 'down'|
+	DISP_ST_LEFT         = 'left'|
+	DISP_ST_RIGHT        = 'right';
+
+enum StatemachinePOSPrinterBarcodeType:
+	PTR_BCS_UPCA           = 'upca'|
+	PTR_BCS_UPCE           = 'upcb'|
+	PTR_BCS_JAN8           = 'jan8'|
+	PTR_BCS_EAN8           = 'ean8'|
+	PTR_BCS_JAN13          = 'jan13'|
+	PTR_BCS_EAN13          = 'ean13'|
+	PTR_BCS_TF             = 'tf'|
+	PTR_BCS_ITF            = 'itf'|
+	PTR_BCS_Codabar        = 'codeabar'|
+	PTR_BCS_Code39         = 'code39'|
+	PTR_BCS_Code93         = 'code93'|
+	PTR_BCS_Code128        = 'code128'|
+	PTR_BCS_UPCA_S         = 'upca_s'|
+	PTR_BCS_UPCE_S         = 'upce_s'|
+	PTR_BCS_UPCD1          = 'upcd1'|
+	PTR_BCS_UPCD2          = 'upcd2'|
+	PTR_BCS_UPCD3          = 'upcd3'|
+	PTR_BCS_UPCD4          = 'upcd4'|
+	PTR_BCS_UPCD5          = 'upcd5'|
+	PTR_BCS_EAN8_S         = 'ean8_s'|
+	PTR_BCS_EAN13_S        = 'ean13_s'|
+	PTR_BCS_EAN128         = 'ean128'|
+	PTR_BCS_OCRA           = 'orca'|
+	PTR_BCS_OCRB           = 'ocrb'|
+	PTR_BCS_Code128_Parsed = 'code128_parsed'|
+	PTR_BCS_GS1DATABAR     = 'gs1databar'|
+	PTR_BCS_GS1DATABAR_E   = 'gs1databar_e'|
+	PTR_BCS_GS1DATABAR_S   = 'gs1databar_s'|
+	PTR_BCS_GS1DATABAR_E_S = 'gs1databar_e_s'|
+	PTR_BCS_PDF417         = 'pdf417'|
+	PTR_BCS_MAXICODE       = 'maxicode'|
+	PTR_BCS_DATAMATRIX     = 'datamatrix'|
+	PTR_BCS_QRCODE         = 'qrcode'|
+	PTR_BCS_UQRCODE        = 'uqrcode'|
+	PTR_BCS_AZTEC          = 'aztec'|
+	PTR_BCS_UPDF417        = 'updf417';
+
+StatemachineImport returns types::LImport:
+	'import' importedNamespace=StatemachineQualifiedNameWithWildCard;
+
+StatemachineQualifiedNameWithWildCard:
+	QualifiedName ('.' '*')?;
+
+QualifiedName:
+	ValidID (=> '.' ValidID)*;
+
+ValidID:
+	ID;
+
+TRANSLATABLESTRING:
+	STRING;
+	
+TRANSLATABLEID:
+	ID;
+
+SignedNumber returns ecore::EDouble:
+	('-')? UnsignedNumber;
+
+UnsignedNumber returns ecore::EDouble:
+	INT ('.' (INT))?;
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..9ee1b7b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceRuntimeModule.java
@@ -0,0 +1,49 @@
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderProvider;
+
+@SuppressWarnings("restriction")
+public class StatemachineDSLBundleSpaceRuntimeModule extends
+		StatemachineDSLRuntimeModule {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#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.datamartdsl.AbstractDatamartDSLRuntimeModule#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.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..4dbd897
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLBundleSpaceStandaloneSetup.java
@@ -0,0 +1,39 @@
+package org.eclipse.osbp.xtext.statemachine;
+
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@SuppressWarnings("restriction")
+public class StatemachineDSLBundleSpaceStandaloneSetup extends
+		StatemachineDSLStandaloneSetup {
+	/**
+	 * Do setup.
+	 */
+	public static void doSetup() {
+		new StatemachineDSLBundleSpaceStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLStandaloneSetupGenerated#createInjectorAndDoEMFRegistration()
+	 */
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLStandaloneSetupGenerated#createInjector()
+	 */
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(new StatemachineDSLBundleSpaceRuntimeModule());
+	}
+
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLRuntimeModule.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLRuntimeModule.java
new file mode 100644
index 0000000..8c729de
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLRuntimeModule.java
@@ -0,0 +1,75 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.statemachine;
+
+import javax.inject.Singleton;
+
+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 org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+import org.eclipse.osbp.xtext.statemachine.jvmmodel.StatemachineDSLModelGenerator;
+import org.eclipse.osbp.xtext.statemachine.scoping.StatemachineDSLScopeProvider;
+import org.eclipse.osbp.xtext.statemachine.valueconverter.StatemachineDSLQualifiedNameProvider;
+import org.eclipse.osbp.xtext.statemachine.valueconverter.StatemachineDSLValueConverterService;
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
+
+import com.google.inject.Binder;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class StatemachineDSLRuntimeModule extends org.eclipse.osbp.xtext.statemachine.AbstractStatemachineDSLRuntimeModule {
+	@Override
+	public Class<? extends IGenerator> bindIGenerator() {
+		return StatemachineDSLModelGenerator.class;
+	}
+
+	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return StatemachineDSLScopeProvider.class;
+	}
+	
+	@Override
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return StatemachineDSLQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return StatemachineDSLValueConverterService.class;
+	}
+
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(IOutputConfigurationProvider.class).to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return LazyJvmTypeTransientValueService.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetup.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetup.java
new file mode 100644
index 0000000..f9bb603
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineDSLStandaloneSetup.java
@@ -0,0 +1,16 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.xtext.statemachine;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class StatemachineDSLStandaloneSetup extends StatemachineDSLStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new StatemachineDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineEnums.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineEnums.java
new file mode 100644
index 0000000..ceee6d3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/StatemachineEnums.java
@@ -0,0 +1,26 @@
+package org.eclipse.osbp.xtext.statemachine;
+
+public class StatemachineEnums {
+	public enum Controls {
+		BUTTON,
+		FIELD,
+		ITEM,
+		DTO,
+		SCHEDULER,
+		LINEDISPLAY,
+		POSPRINTER,
+		CASHDRAWER,
+		PAYMENTTERMINAL
+	}
+	
+	public enum Functions {
+		GUARD,
+		OPERATION,
+		FUNCTION
+	}
+	
+	public enum StorageAccess {
+		KEY,
+		ATTRIBUTE 
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/doc-files/grammar.png b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/doc-files/grammar.png
new file mode 100644
index 0000000..bb065ab
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/doc-files/grammar.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.xtend
new file mode 100644
index 0000000..3579e88
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.xtend
@@ -0,0 +1,33 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.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 com.google.inject.Inject;
+// import org.eclipse.osbp.xtext.statemachine.services.StatemachineDSLGrammarAccess
+
+/**
+ * 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 StatemachineDSLFormatter extends AbstractDeclarativeFormatter {
+
+	@Inject XtypeGrammarAccess grammarAccess
+
+	override protected void configureFormatting(FormattingConfig c) {
+		val genericFormatter = new GenericFormatter()
+
+		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "Statemachine", "StatemachineImport" )
+		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend
new file mode 100644
index 0000000..21a4657
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend
@@ -0,0 +1,1291 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+package org.eclipse.osbp.xtext.statemachine.jvmmodel
+
+import com.google.inject.Inject
+import java.util.Date
+import java.util.Iterator
+import java.util.Timer
+import java.util.regex.Pattern
+import org.eclipse.emf.common.util.EList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.osbp.abstractstatemachine.AbstractDataProvider
+import org.eclipse.osbp.abstractstatemachine.AbstractEventSource
+import org.eclipse.osbp.abstractstatemachine.AbstractPeripheralService
+import org.eclipse.osbp.abstractstatemachine.AbstractStateMachine
+import org.eclipse.osbp.dsl.common.datatypes.IDto
+import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.ecview.core.^extension.model.^extension.YSuggestTextFieldEvents
+import org.eclipse.osbp.ui.api.message.MessageEvent
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine
+import org.eclipse.osbp.utils.constants.GeneratorConstants
+import org.eclipse.osbp.xtext.statemachine.Statemachine
+import org.eclipse.osbp.xtext.statemachine.StatemachineAction
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler
+import org.eclipse.osbp.xtext.statemachine.StatemachineEnums
+import org.eclipse.osbp.xtext.statemachine.StatemachineFunction
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage
+import org.eclipse.osbp.xtext.statemachine.StatemachineState
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.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.component.annotations.Component
+import org.osgi.service.component.annotations.Reference
+import org.osgi.service.component.annotations.ReferenceCardinality
+import org.osgi.service.component.annotations.ReferencePolicy
+import org.slf4j.Logger
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryService
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils
+import java.lang.reflect.Field
+
+/**
+ * <p>
+ * Statemachine
+ * This inferrer infers models of extension statemachine and generates code for a enum based statemachine 
+ * </p>
+ * 
+ * @author Joerg Riegel
+ */
+class StatemachineDSLJvmModelInferrer extends AbstractModelInferrer {
+
+	@Inject extension JvmTypesBuilder
+	@Inject extension StatemachineDSLModelGenerator
+	@Inject extension IQualifiedNameProvider
+	@Inject extension AnnotationExtension
+	@Inject extension ModelExtensions
+
+	val binderPostfix = "ServiceBinder"
+
+	def dispatch void infer(StatemachinePackage statemachinePkg, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPreIndexingPhase) {
+		statemachinePkg.generatePckgName(acceptor)
+
+		// the service binder class
+		val bindercls = statemachinePkg.toClass(statemachinePkg.name.toString.concat(binderPostfix))
+		bindercls.simpleName = bindercls.simpleName.toFirstUpper
+		acceptor.accept(bindercls,
+			[
+				annotations += _annotationTypesBuilder.annotationRef(SuppressWarnings, "serial")
+				annotations += _annotationTypesBuilder.annotationRef(typeof(Component))
+				packageName = statemachinePkg.fullyQualifiedName.toString
+				documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+				it.toBinderFields(statemachinePkg)
+				it.toBinderOperations(statemachinePkg)
+			])
+		for (statemachine : statemachinePkg.statemachines) {
+			val clsName = statemachine.className.toFirstUpper
+			val cls = statemachinePkg.toClass(clsName);
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractStateMachine))
+			cls.simpleName = cls.simpleName.toFirstUpper
+			val pkgName = statemachinePkg.fullyQualifiedName.toString + "." + clsName.toLowerCase
+			acceptor.accept(
+				cls,
+				[
+					it.toConstructor(statemachine)
+					it.toFields(statemachine)
+					it.toOperations(statemachine)
+					packageName = pkgName
+					documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+				]
+			)
+			for (control : statemachine.controls) {
+				val controlClsName = control.name.toString.toFirstUpper
+				val controlCls = statemachinePkg.toClass(controlClsName);
+				controlCls.simpleName = controlCls.simpleName.toFirstUpper
+				switch control {
+					StatemachineControlScheduler: {
+						controlCls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractEventSource))
+						acceptor.accept(
+							controlCls,
+							[
+								// schedulers
+								it.generateSchedulers(control)
+								packageName = pkgName
+								documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+							]
+						)
+					}
+					StatemachineControlButton: {
+						controlCls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractEventSource))
+						acceptor.accept(
+							controlCls,
+							[
+								// buttons
+								it.generateButtons(control)
+								packageName = pkgName
+								documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+							]
+						)
+					}
+					StatemachineControlField: {
+						controlCls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractEventSource))
+						acceptor.accept(
+							controlCls,
+							[
+								// fields
+								it.generateFields(control)
+								packageName = pkgName
+								documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+							]
+						)
+					}
+					StatemachineControlDTO: {
+						controlCls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractDataProvider))
+						acceptor.accept(
+							controlCls,
+							[
+								// dto
+								it.generateDTOs(control)
+								packageName = pkgName
+								documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+							]
+						)
+					}
+					StatemachineControlPeripheral: {
+						controlCls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractPeripheralService))
+						acceptor.accept(
+							controlCls,
+							[
+								packageName = pkgName
+								documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+							]
+						)
+					}
+				}
+			}
+		}
+	}
+	
+	def generateSchedulers(JvmGenericType controlCls, StatemachineControlScheduler control) {
+		control.schedulers.forEach [
+			var JvmField field = control.toField(it.name, _typeReferenceBuilder.typeRef(Timer))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+			field = control.toField(it.name+"Scheduler", _typeReferenceBuilder.typeRef(Long))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+		]
+		// methods
+		control.schedulers.forEach [
+			var JvmOperation operation = control.toGetter(it.name+"Scheduler",
+				_typeReferenceBuilder.typeRef(Long))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			val scheduler = it
+			operation = control.toMethod('''set«it.name.toFirstUpper»Scheduler''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				visibility = JvmVisibility.PUBLIC
+				parameters +=
+					control.toParameter("delay", _typeReferenceBuilder.typeRef(Long));
+				body = [
+					append(
+						'''
+						if («scheduler.name» != null) {
+							«scheduler.name».cancel();
+							«scheduler.name».purge();
+						}
+						«scheduler.name» = new Timer();
+						«scheduler.name».schedule(new TaskEventSource(statemachine, new MessageEvent(EventType.TRIGGER, "«scheduler.
+							event.name»")), this.«scheduler.name»Scheduler = delay);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+		]
+		// init
+		var JvmOperation init = control.toMethod("init",
+			_typeReferenceBuilder.typeRef(Void::TYPE)) [
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			visibility = JvmVisibility.PUBLIC
+			body = []
+		]
+		controlCls.members += init
+	}
+	
+	def generateButtons(JvmGenericType controlCls, StatemachineControlButton control) {
+		var JvmField pad = control.toField(control.name.toFirstLower + "Enabled",
+			_typeReferenceBuilder.typeRef(Boolean))
+		pad.visibility = JvmVisibility::PRIVATE
+		controlCls.members += pad
+		control.buttons.forEach [
+			var JvmField field = control.toField(it.name, _typeReferenceBuilder.typeRef(Number))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+			field = control.toField(it.name + "Caption", _typeReferenceBuilder.typeRef(String))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+			field = control.toField(it.name + "Enabled", _typeReferenceBuilder.typeRef(Boolean))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+			field = control.toField(it.name + "Image", _typeReferenceBuilder.typeRef(Object))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+		]
+		// methods
+		control.buttons.forEach [
+			var JvmOperation operation = control.toGetter(it.name,
+				_typeReferenceBuilder.typeRef(Number))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			val button = it
+			// setter
+			operation = control.toMethod('''set«it.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters +=
+					control.toParameter(button.name, _typeReferenceBuilder.typeRef(Number));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						«IF button.event instanceof StatemachineControlButtonAttributeEventKeyboard»
+							statemachine.processEvent(statemachine, new MessageEvent(EventType.KEYBOARD, "«(button.event as StatemachineControlButtonAttributeEventKeyboard).
+							keystroke»"));
+						«ELSEIF button.event instanceof StatemachineControlButtonAttributeEventIdentity»
+							statemachine.processEvent(statemachine, new MessageEvent(EventType.ID, "«(button.event as StatemachineControlButtonAttributeEventIdentity).identity»"));
+						«ELSEIF button.event instanceof StatemachineControlButtonAttributeEventEvent»
+							statemachine.processEvent(statemachine, new MessageEvent(EventType.TRIGGER, "«(button.event as StatemachineControlButtonAttributeEventEvent).event.name»"));
+						«ENDIF»
+						this.«button.name» = «button.name»;''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// caption
+			operation = control.toGetter(it.name+"Caption",
+				_typeReferenceBuilder.typeRef(String))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			operation = control.toMethod('''set«it.name.toFirstUpper»Caption''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(button.name + "Caption",
+					_typeReferenceBuilder.typeRef(String));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«button.name»Caption", this.«button.name»Caption, this.«button.name»Caption = «button.
+							name»Caption);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// enabled
+			operation = control.toGetter(it.name+"Enabled",
+				_typeReferenceBuilder.typeRef(Boolean))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			operation = control.toMethod('''set«it.name.toFirstUpper»Enabled''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(button.name + "Enabled",
+					_typeReferenceBuilder.typeRef(Boolean));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«button.name»Enabled", this.«button.name»Enabled, this.«button.name»Enabled = «button.
+							name»Enabled);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// image
+			operation = control.toGetter(it.name+"Image",
+				_typeReferenceBuilder.typeRef(Object))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			operation = control.toMethod('''set«it.name.toFirstUpper»Image''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(button.name + "Image",
+					_typeReferenceBuilder.typeRef(Object));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«button.name»Image", this.«button.name»Image, this.«button.name»Image = «button.
+							name»Image);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+		]
+		// keypad enabled
+		var JvmOperation getEnabled = control.toGetter(control.name.toFirstLower + "Enabled",
+			_typeReferenceBuilder.typeRef(Boolean))
+		getEnabled.visibility = JvmVisibility::PUBLIC
+		controlCls.members += getEnabled
+		var JvmOperation setEnabled = control.toMethod(
+			'''set«control.name.toFirstUpper»Enabled''',
+			_typeReferenceBuilder.typeRef(Void::TYPE)) [
+			parameters += control.toParameter(control.name.toFirstLower + "Enabled",
+				_typeReferenceBuilder.typeRef(Boolean));
+			visibility = JvmVisibility.PUBLIC
+			body = [
+				append(
+					'''
+					«FOR button:control.buttons»
+					set«button.name.toFirstUpper»Enabled(«control.name.toFirstLower»Enabled);
+					«ENDFOR»
+					pcs.firePropertyChange("«control.name.toFirstLower»Enabled", this.«control.name.toFirstLower»Enabled, this.«control.name.toFirstLower»Enabled = «control.name.toFirstLower»Enabled);
+					'''
+				)
+			]
+		]
+		setEnabled.visibility = JvmVisibility::PUBLIC
+		controlCls.members += setEnabled
+		// init
+		var _hasImages = false
+		for (button : control.buttons) {
+			if(button.hasImage) _hasImages = true
+		}
+		val hasImages = _hasImages
+		var JvmOperation init = control.toMethod("init",
+			_typeReferenceBuilder.typeRef(Void::TYPE)) [
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			visibility = JvmVisibility.PUBLIC
+			// suppress label if image is set and load resource
+			body = [
+				append(
+					'''
+						super.init();
+						set«control.name.toFirstUpper»Enabled(false);
+						«IF hasImages»
+							«FOR button : control.buttons»
+								«IF button.hasImage»set«button.name.toFirstUpper»Caption(null);
+								«ENDIF»
+							«ENDFOR»
+							if(statemachine != null) {
+							«FOR button : control.buttons»
+								«IF button.hasImage && button.image.length>0»	set«button.name.toFirstUpper»Image(statemachine.getThemeResourceService().getThemeResource("«button.
+							image»", ThemeResourceType.ICON));
+								«ENDIF»
+							«ENDFOR»
+							}
+						«ENDIF»
+					''')
+			]
+		]
+		controlCls.members += init
+	}
+	
+	def generateFields(JvmGenericType controlCls, StatemachineControlField control) {
+		control.fields.forEach [
+			var JvmField field = control.toField(it.name,
+				_typeReferenceBuilder.typeRef(it.decodeType))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+			// extra suggest text event field
+			if (it.attributeType.attributeType == StatemachineInternalType.SUGGESTTEXT) {
+				field = control.toField(it.name + "Event",
+					_typeReferenceBuilder.typeRef(YSuggestTextFieldEvents))
+				field.visibility = JvmVisibility::PRIVATE
+				controlCls.members += field
+			}
+			field = control.toField(it.name + "Enabled", _typeReferenceBuilder.typeRef(Boolean))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+		]
+		control.layouts.forEach [
+			var JvmField layout = control.toField(it.name + "Enabled", _typeReferenceBuilder.typeRef(Boolean))
+			layout.visibility = JvmVisibility::PRIVATE
+			controlCls.members += layout
+		]
+		// methods
+		control.fields.forEach [
+			var JvmOperation operation = control.toGetter(it.name,
+				_typeReferenceBuilder.typeRef(it.decodeType))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			val field = it
+			// setter
+			operation = control.toMethod('''set«it.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(field.name,
+					_typeReferenceBuilder.typeRef(field.decodeType))
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						«field.decodeSetter»''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// enabled
+			operation = control.toGetter(it.name+"Enabled",
+				_typeReferenceBuilder.typeRef(Boolean))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			operation = control.toMethod('''set«it.name.toFirstUpper»Enabled''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(field.name + "Enabled",
+					_typeReferenceBuilder.typeRef(Boolean));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«field.name»Enabled", this.«field.name»Enabled, this.«field.name»Enabled = «field.
+							name»Enabled);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// extra methods for suggestText field 
+			if (it.attributeType.attributeType == StatemachineInternalType.SUGGESTTEXT) {
+				operation = control.toGetter(it.name + "Event",
+					_typeReferenceBuilder.typeRef(YSuggestTextFieldEvents))
+				operation.visibility = JvmVisibility::PUBLIC
+				controlCls.members += operation
+				val eventfield = it
+		
+				// setter
+				operation = control.toMethod('''set«it.name.toFirstUpper»Event''',
+					_typeReferenceBuilder.typeRef(Void::TYPE)) [
+					parameters += control.toParameter(eventfield.name+"Event",
+						_typeReferenceBuilder.typeRef(YSuggestTextFieldEvents))
+					visibility = JvmVisibility.PUBLIC
+					body = [
+						append(
+							'''
+							pcs.firePropertyChange("«field.name»Event", this.«field.name»Event, this.«field.name»Event = «field.name»Event);''')]
+				]
+				operation.visibility = JvmVisibility::PUBLIC
+				controlCls.members += operation
+			}
+		]
+		control.layouts.forEach [
+			// enabled
+			var JvmOperation operation = control.toGetter(it.name+"Enabled",
+				_typeReferenceBuilder.typeRef(Boolean))
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			val layout = it
+			operation = control.toMethod('''set«it.name.toFirstUpper»Enabled''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(layout.name + "Enabled",
+					_typeReferenceBuilder.typeRef(Boolean));
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«layout.name»Enabled", this.«layout.name»Enabled, this.«layout.name»Enabled = «layout.
+							name»Enabled);''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+		]
+		// init
+		var JvmOperation init = control.toMethod("init",
+			_typeReferenceBuilder.typeRef(Void::TYPE)) [
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			visibility = JvmVisibility.PUBLIC
+			body = [
+				append(
+					'''
+						super.init();
+						«FOR field : control.fields»
+							pcs.firePropertyChange("«field.name»Enabled", this.«field.name»Enabled, this.«field.name»Enabled = false);
+						«ENDFOR»
+						«FOR layout : control.layouts»
+							pcs.firePropertyChange("«layout.name»Enabled", this.«layout.name»Enabled, this.«layout.name»Enabled = false);
+						«ENDFOR»
+					''')
+			]
+		]
+		controlCls.members += init
+	}
+	
+	def generateDTOs(JvmGenericType controlCls, StatemachineControlDTO control) {
+		control.dtos.forEach [
+			var JvmField field = control.toField(it.name,
+				_typeReferenceBuilder.typeRef(it.attributeType.attributeType.fullyQualifiedName.toString))
+			field.visibility = JvmVisibility::PRIVATE
+			controlCls.members += field
+		]
+		// methods
+		control.dtos.forEach [
+			val dto = it
+			// dto getter
+			var JvmOperation operation = control.toMethod('''get«it.attributeType.attributeType.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(IDto)) [
+					visibility = JvmVisibility::PUBLIC
+					body = [append(
+					'''
+					return «dto.name»;''')]
+				]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			// dto id getter
+			if(it.attributeType.attributeType.primaryKeyAttribute != null) {
+				operation = control.toMethod('''get«it.attributeType.attributeType.name.toFirstUpper»«it.attributeType.attributeType.idAttributeName.toFirstUpper»''',
+					_typeReferenceBuilder.typeRef(it.attributeType.attributeType.idAttributeType.name)) [
+						visibility = JvmVisibility::PUBLIC
+						body = [append(
+						'''
+						return «dto.name».get«dto.attributeType.attributeType.idAttributeName.toFirstUpper»();''')]
+					]
+				operation.visibility = JvmVisibility::PUBLIC
+				controlCls.members += operation
+			}
+			// attribute/ref getter/setter
+			for(f:it.attributeType.attributeType.features) {
+				if(f instanceof LDtoInheritedAttribute) {
+					var typeName = f.inheritedFeature.type.name
+					switch f.inheritedFeature.type {
+						LDataType: {
+							if((f.inheritedFeature.type as LDataType).jvmTypeReference != null) {
+								typeName = (f.inheritedFeature.type as LDataType).jvmTypeReference.simpleName
+							}
+						}
+						LEnum: {
+							// due to a bug the fqn of the feature returns the entity fqn and not dto fqn - so build it myself
+							typeName = f.eContainer.fullyQualifiedName.toString.replace(f.eContainer.fullyQualifiedName.lastSegment.toString, (f.inheritedFeature.type as LEnum).name)
+						}
+					}
+					var isTimestamp = false
+					// don't want the sql datatypes at ui level
+					if(typeName.equals("Timestamp")) {
+						isTimestamp = true
+						typeName = "org.joda.time.DateTime"
+					}
+					val _typeName = typeName
+					val _isTimestamp = isTimestamp
+					operation = control.toMethod('''get«it.attributeType.attributeType.name.toFirstUpper»«f.inheritedFeature.name.toFirstUpper»''',
+						_typeReferenceBuilder.typeRef(typeName)) [
+							visibility = JvmVisibility::PUBLIC
+							body = [append(
+							'''
+							if(«dto.name»!=null) {
+								return «IF _isTimestamp»new DateTime(«ENDIF»«dto.name».get«f.inheritedFeature.name.toFirstUpper»()«IF _isTimestamp»)«ENDIF»;
+							} else {
+								return null;
+							}''')]
+						]
+					controlCls.members += operation
+					operation = control.toMethod('''set«it.attributeType.attributeType.name.toFirstUpper»«f.inheritedFeature.name.toFirstUpper»''',
+						_typeReferenceBuilder.typeRef(Void::TYPE)) [
+							visibility = JvmVisibility::PUBLIC
+							parameters += control.toParameter(f.inheritedFeature.name,	_typeReferenceBuilder.typeRef(_typeName))
+							body = [append('''«dto.name».set«f.inheritedFeature.name.toFirstUpper»(«f.inheritedFeature.name»«IF _isTimestamp».toDate()«ENDIF»);''')]
+						]
+					controlCls.members += operation
+				}
+				if(f instanceof LDtoInheritedReference) {
+					if(f.inheritedFeature.toMany) {
+						if(control.dtos.containsType((f.inheritedFeature.type as LEntity).getName())) {
+							val typeName = f.inheritedFeature.type.name+"Dto"
+							controlCls.members += operation
+							operation = control.toMethod('''addTo«it.attributeType.attributeType.name.toFirstUpper»«f.inheritedFeature.name.toFirstUpper»''',
+								_typeReferenceBuilder.typeRef(Void::TYPE)) [
+									visibility = JvmVisibility::PUBLIC
+									parameters += control.toParameter(f.inheritedFeature.name,	_typeReferenceBuilder.typeRef(IDto))
+									body = [append('''«dto.name».addTo«f.inheritedFeature.name.toFirstUpper»((«f.inheritedFeature.type.name.toString»Dto)«f.inheritedFeature.name»);''')]
+								]
+							controlCls.members += operation
+							operation = control.toMethod('''removeFrom«it.attributeType.attributeType.name.toFirstUpper»«f.inheritedFeature.name.toFirstUpper»''',
+								_typeReferenceBuilder.typeRef(Void::TYPE)) [
+									visibility = JvmVisibility::PUBLIC
+									parameters += control.toParameter(f.inheritedFeature.name,	_typeReferenceBuilder.typeRef(IDto))
+									body = [append('''«dto.name».removeFrom«f.inheritedFeature.name.toFirstUpper»((«f.inheritedFeature.type.name.toString»Dto)«f.inheritedFeature.name»);''')]
+								]
+							controlCls.members += operation
+						}
+					} else {
+						if(control.dtos.containsType((f.inheritedFeature.type as LEntity).getName())) {
+							val typeName = f.inheritedFeature.type.name+"Dto"
+							controlCls.members += operation
+							operation = control.toMethod('''set«it.attributeType.attributeType.name.toFirstUpper»«f.inheritedFeature.name.toFirstUpper»''',
+								_typeReferenceBuilder.typeRef(Void::TYPE)) [
+									visibility = JvmVisibility::PUBLIC
+									parameters += control.toParameter(f.inheritedFeature.name,	_typeReferenceBuilder.typeRef(IDto))
+									body = [append('''«dto.name».set«f.inheritedFeature.name.toFirstUpper»((«f.inheritedFeature.type.name.toString»Dto)«f.inheritedFeature.name»);''')]
+								]
+							controlCls.members += operation
+						}
+					}
+				}
+			}
+			// dto setter
+			operation = control.toMethod('''set«it.attributeType.attributeType.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+				parameters += control.toParameter(dto.name,
+					_typeReferenceBuilder.typeRef(IDto))
+				visibility = JvmVisibility.PUBLIC
+				body = [
+					append(
+						'''
+						pcs.firePropertyChange("«dto.attributeType.attributeType.name.toFirstLower»", this.«dto.name», this.«dto.name» = («dto.attributeType.attributeType.name»)«dto.name»);«IF dto.hasEvent»
+						statemachine.processEvent(statemachine, new MessageEvent(MessageEvent.EventType.TRIGGER, "«dto.event.name»"));«ENDIF»''')]
+			]
+			operation.visibility = JvmVisibility::PUBLIC
+			controlCls.members += operation
+			operation = control.toMethod('''update«it.attributeType.attributeType.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+					visibility = JvmVisibility::PUBLIC
+					parameters += control.toParameter(dto.name,
+						_typeReferenceBuilder.typeRef(IDto))
+					body = [append('''((IDTOService<«dto.attributeType.attributeType.name»>)dtoServices.get("«dto.attributeType.attributeType.name»")).update((«dto.attributeType.attributeType.name»)«dto.name»);''')]
+				]
+			controlCls.members += operation
+			operation = control.toMethod('''delete«it.attributeType.attributeType.name.toFirstUpper»''',
+				_typeReferenceBuilder.typeRef(Void::TYPE)) [
+					visibility = JvmVisibility::PUBLIC
+					parameters += control.toParameter(dto.name,
+						_typeReferenceBuilder.typeRef(IDto))
+					body = [append('''((IDTOService<«dto.attributeType.attributeType.name»>)dtoServices.get("«dto.attributeType.attributeType.name»")).delete((«dto.attributeType.attributeType.name»)«dto.name»);''')]
+				]
+			controlCls.members += operation
+		]
+		// init
+		var JvmOperation init = control.toMethod("init",
+			_typeReferenceBuilder.typeRef(Void::TYPE)) [
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			visibility = JvmVisibility.PUBLIC
+			body = [
+				append(
+					'''
+						if (dtoServices.isEmpty()) {
+							«FOR dto : control.dtos»
+								initDatasource("«dto.name»");
+							«ENDFOR»
+						}
+					''')
+				]
+			]
+		controlCls.members += init
+	}
+	
+	def boolean containsType(EList<StatemachineControlDTOAttribute> list, String entityName) {
+		for(attr:list) {
+			if(entityName.equals(attr.attributeType.attributeType.wrappedType?.name)) {
+				return true
+			}
+		}
+		return false
+	}
+
+	def decodeSetter(StatemachineControlFieldAttribute field) {
+		switch field.attributeType.attributeType {
+			case BOOLEAN: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case INTEGER: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case LONG: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case DOUBLE: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case STRING: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case DATE: {
+				return '''pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+					'''
+			}
+			case SUGGESTTEXT: {
+				return '''
+				pcs.firePropertyChange("«field.name»", this.«field.name», this.«field.name» = «field.name»);
+				set«field.name.toFirstUpper»Event(null);
+				if(«field.name» == null || «field.name».isEmpty()) {
+					set«field.name.toFirstUpper»Event(YSuggestTextFieldEvents.CLEAR);
+				} else {
+					set«field.name.toFirstUpper»Event(YSuggestTextFieldEvents.OPEN_POPUP);
+				}'''
+			}
+		}
+	}
+
+	def decodeType(StatemachineControlFieldAttribute field) {
+		switch field.attributeType.attributeType {
+			case BOOLEAN: {
+				return Boolean;
+			}
+			case INTEGER: {
+				return Integer;
+			}
+			case LONG: {
+				return Long;
+			}
+			case DOUBLE: {
+				return Double;
+			}
+			case STRING: {
+				return String;
+			}
+			case DATE: {
+				return Date;
+			}
+			case SUGGESTTEXT: {
+				return String;
+			}
+		}
+	}
+
+	def void toConstructor(JvmDeclaredType type, Statemachine statemachine) {
+		type.members += statemachine.toConstructor(
+			[
+				body = [
+					append(
+						'''
+						super();
+						state = States.«statemachine.initialState.name»;'''
+					)
+				]
+			])
+	}
+
+	def void toFields(JvmGenericType type, Statemachine statemachine) {
+		var JvmField field = null
+
+		// create logger
+		field = statemachine.toField("log", _typeReferenceBuilder.typeRef(Logger))[
+			setInitializer([append('''org.slf4j.LoggerFactory.getLogger("statemachine")''')])]
+		field.static = true
+		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = statemachine.toField("state", _typeReferenceBuilder.typeRef("States"))
+		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+	}
+
+	def void toOperations(JvmGenericType type, Statemachine statemachine) {
+		type.members += statemachine.toMethod("start", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				body = [
+					append(
+						'''schedule(this, 100, new MessageEvent(EventType.TRIGGER, "«statemachine.initialEvent.name»"));''')
+				]
+			])
+		type.members += statemachine.toInterface("State")[
+			members += statemachine.toMethod("process", _typeReferenceBuilder.typeRef("States"),
+				[
+					parameters += statemachine.toParameter("stateMachine", _typeReferenceBuilder.typeRef(IStateMachine))
+					parameters += statemachine.toParameter("event", _typeReferenceBuilder.typeRef(MessageEvent))
+				])]
+		type.members += statemachine.toMethod("processEvent", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				parameters += statemachine.toParameter("stateMachine", _typeReferenceBuilder.typeRef(IStateMachine))
+				parameters += statemachine.toParameter("event", _typeReferenceBuilder.typeRef(MessageEvent))
+				body = [append('''state = state.process(stateMachine, event);''')]
+			])
+		type.members += statemachine.toEnumerationType("States") [
+			superTypes += _typeReferenceBuilder.typeRef("State")
+			statemachine.states.forEach [ state |
+				documentation = state.documentation
+				members += state.toEnumerationLiteral(state.name,
+					[
+						initializer = [
+							append(
+								'''
+								@Override
+								public States process(final IStateMachine stateMachine, final MessageEvent event) {
+									stateMachine.dispatchMessages(event);
+									switch (event.getType()) {
+								«IF state.keystroke != null»		case KEYBOARD:
+											stateMachine.append("«state.keystroke.name»", event.getId());«IF state.hasKeyOperation»
+											«state.keyOperation.decodeOperation(0)»
+								«ENDIF»
+											break;
+								«ENDIF»
+								«IF state.identity != null»		case ID:
+											«state.identity.decodeOperation(true, 0)»
+											break;
+								«ENDIF»
+								«IF state.triggers.size > 0»		case TRIGGER:
+											«state.createTriggerEvents»
+								«ENDIF»
+										default:
+											break;
+									}
+									return this;
+								}''')
+						]
+					])
+			]
+		]
+	}
+
+	def String className(Statemachine statemachine) {
+		var String clsName = statemachine.name.toString.toFirstUpper
+		var parts = clsName.split(Pattern.quote("."))
+		var len = parts.length
+		if (len > 1) {
+			return parts.get(len - 1).toFirstUpper
+		}
+		return clsName
+	}
+
+	def createTriggerEvents(StatemachineState state) 
+		'''
+		switch (event.getId()) {
+		«FOR trig   : state.triggers»«FOR t:trig.triggers»	case "«t.name»":
+		«ENDFOR»
+		«trig.doGuards(2)»
+		«ENDFOR»
+		«identation(1)»}
+		«identation(1)»break;
+		'''
+	
+	def doGuards(StatemachineTrigger trigger, int level) {
+		return 
+		'''
+		«trigger.recurseGuards(trigger.guards.iterator, level)»«IF trigger.guards.size == 0 && !trigger.hasTransition || trigger.guards.size > 0»
+		«identation(level)»break;«ENDIF»'''
+	}
+	
+	def String recurseGuards(StatemachineTrigger trigger, Iterator<StatemachineGuard> guards, int level) {
+		var body = ""
+		if(guards.hasNext) {
+			var guard = guards.next
+			body = 
+			'''
+			«guard.decodeGuard(level)»
+			«trigger.recurseGuards(guards, level+1)»
+			«identation(level)»}
+			«guard.decodeGuardOnFail(level)»
+			'''
+		} else {
+			body = '''
+			«trigger.generateActions(level)»
+			«IF trigger.hasTransition»«identation(level)»return «trigger.transition.getName()»;
+			«ENDIF»'''
+		}
+		return body
+	}
+	
+	def identation(int level) {
+		var body = ''''''
+		for(var i=0; i<level;i++) {
+			body = '''«body»	'''
+		}
+		return body
+	}
+	
+	def decodeGuard(StatemachineGuard guard, int level) 
+		'''«identation(level)»if((boolean)«call(guard as EObject, guard.guard.name, StatemachineEnums.Functions.GUARD, null, null, false)») {'''
+	
+	def decodeGuardOnFail(StatemachineGuard guard, int level)
+		'''
+		«IF guard.hasOnFail»
+		«identation(level)»else {
+			«identation(level)»Notification.show(stateMachine.getTranslation("«guard.onFailCaption»"), stateMachine.getTranslation("«guard.onFailDescription»"), Type.«guard.onFailType.getName()»);
+		«identation(level)»}«ENDIF»'''
+
+	def generateActions(StatemachineTrigger trigger, int level)
+		'''
+		«FOR action : trigger.actions»«action.switchAction(level)»
+		«ENDFOR»
+		'''
+	
+	def switchAction(StatemachineAction action, int level) {
+		switch action {
+			StatemachineActionPeripheralBlinkRate: {
+				return '''«identation(level)»stateMachine.set("blinkRate", «action.blinkRate»);
+					'''
+			}
+			StatemachineActionPeripheralClear: {
+				return '''«identation(level)»stateMachine.set("clearDisplay", "");
+					'''
+			}
+			StatemachineActionPeripheralCreateWindow: {
+				return '''«identation(level)»stateMachine.set("createWindow", "«action.viewportRow»|«action.viewportColumn»|«action.viewportHeight»|«action.viewportWidth»|«action.windowHeight»|«action.windowWidth»");'''
+			}
+			StatemachineActionPeripheralCursorType: {
+				return '''«identation(level)»stateMachine.set("cursorType", LineDisplayConst.«action.cursorType.getName()»);'''
+			}
+			StatemachineActionPeripheralDestroyWindow: {
+				return '''«identation(level)»stateMachine.set("destroyWindow", "");'''
+			}
+			StatemachineActionPeripheralDeviceBrightness: {
+				return '''«identation(level)»stateMachine.set("deviceBrightness", «action.brightness»);'''
+			}
+			StatemachineActionPeripheralDisplayBitmap: {
+				return '''«identation(level)»stateMachine.set("displayBitmap", «action.bitmapId»);'''
+			}
+			StatemachineActionPeripheralDisplayText: {
+				if (action.hasType) {
+					return '''«identation(level)»stateMachine.set("displayLine", «action.text.concatenation(_typeReferenceBuilder.typeRef(String))»+"|"+LineDisplayConst.«action.textType.getName()»);'''
+				} else {
+					return '''«identation(level)»stateMachine.set("displayLine", «action.text.concatenation(_typeReferenceBuilder.typeRef(String))»);'''
+				}
+			}
+			StatemachineActionPeripheralDisplayTextAt: {
+				if (action.hasType) {
+					return '''«identation(level)»stateMachine.set("displayTextAt", "«action.row»|«action.column»|"+«action.text.concatenation(_typeReferenceBuilder.typeRef(String))»+"|"+LineDisplayConst.«action.textType.getName()»);'''
+				} else {
+					return '''«identation(level)»stateMachine.set("displayTextAt", "«action.row»|«action.column»|"+«action.text.concatenation(_typeReferenceBuilder.typeRef(String))»);'''
+				}
+			}
+			StatemachineActionPeripheralInterCharacterWait: {
+				return '''«identation(level)»stateMachine.set("interCharacterWait", «action.getWait()»);'''
+			}
+			StatemachineActionPeripheralMarqueeFormat: {
+				return '''«identation(level)»stateMachine.set("marqueeFormat", LineDisplayConst.«action.format.getName()»);'''
+			}
+			StatemachineActionPeripheralMarqueeRepeatWait: {
+				return '''«identation(level)»stateMachine.set("marqueeRepeatWait", «action.getWait()»);'''
+			}
+			StatemachineActionPeripheralMarqueeType: {
+				return '''«identation(level)»stateMachine.set("marqueeType", LineDisplayConst.«action.marqueeType.getName()»);'''
+			}
+			StatemachineActionPeripheralMarqueeUnitWait: {
+				return '''«identation(level)»stateMachine.set("marqueeUnitWait", «action.getWait()»);'''
+			}
+			StatemachineActionPeripheralScroll: {
+				return '''«identation(level)»stateMachine.set("scroll", ""+LineDisplayConst.«action.direction.getName()»+"|«action.units»");'''
+			}
+			StatemachineActionPeripheralOpenDrawer: {
+				return '''«identation(level)»stateMachine.set("openDrawer", 0);'''
+			}
+			StatemachineActionPeripheralPrintBarcode: {
+				return '''«identation(level)»stateMachine.set("printBarcode", "«action.data»|"+POSPrinterConst.«action.barcodeType.
+					getName()»);'''
+			}
+			StatemachineActionPeripheralPrintBitmap: {
+				return '''«identation(level)»stateMachine.set("printBitmap", «action.bitmapId»);'''
+			}
+			StatemachineActionPeripheralPrintCut: {
+				return '''«identation(level)»stateMachine.set("printCut",«action.text.concatenation(_typeReferenceBuilder.typeRef(String))»);'''
+			}
+			StatemachineActionPeripheralPrintNormal: {
+				return '''«identation(level)»stateMachine.set("printNormal", «action.text.concatenation(_typeReferenceBuilder.typeRef(String))»);'''
+			}
+			StatemachineActionPeripheralPrintRegisterBitmap: {
+				return '''«identation(level)»stateMachine.set("registerBitmap", "«action.bitmapId»|icons/«action.name».bmp");'''
+			}
+			StatemachineActionPeripheralPTOpen: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalOpen", «action.host.concatenation(_typeReferenceBuilder.typeRef(String))»+"|"+«action.port.concatenation(_typeReferenceBuilder.typeRef(int))»);'''
+			}
+			StatemachineActionPeripheralPTClose: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalClose", "");'''
+			}
+			StatemachineActionPeripheralPTAcknowledge: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalAcknowledge", "");'''
+			}
+//			StatemachineActionPeripheralPTPrepaidTopUp: {
+//				return '''«identation(level)»stateMachine.set("paymentTerminalPrepaidTopUp", «action.source.concatenation(_typeReferenceBuilder.typeRef(Double))»);'''
+//			}
+			StatemachineActionPeripheralPTReversal: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalReversal", «action.password.concatenation(_typeReferenceBuilder.typeRef(String))»+"|"+«action.receipt.concatenation(_typeReferenceBuilder.typeRef(String))»);'''
+			}
+			StatemachineActionPeripheralPTRegistration: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalRegistration", «action.password.concatenation(_typeReferenceBuilder.typeRef(String))»+"|«action.configuration»");'''
+			}
+			StatemachineActionPeripheralPTAuthorization: {
+				return '''«identation(level)»stateMachine.set("paymentTerminalAuthorization", «action.amount.concatenation(_typeReferenceBuilder.typeRef(Double))»);'''
+			}
+			StatemachineActionPeripheralPrintReport: {
+				return '''«identation(level)»stateMachine.set("printReport", "«action.report.fullyQualifiedName»«IF action.hasFilter»|«action.key»«ENDIF»");'''
+			}
+			StatemachineActionFieldSet: {
+				return '''«identation(level)»stateMachine.set("«action.attribute.name»", «action.source.concatenation(_typeReferenceBuilder.typeRef(action.attribute.attributeType.attributeType.literal))»);'''
+			}
+			StatemachineActionFieldRemove: {
+				return '''«identation(level)»stateMachine.remove("«action.attribute.name»", -1);'''
+			}
+			StatemachineActionFieldClear: {
+				return '''«identation(level)»stateMachine.clear("«action.attribute.name»");'''
+			}
+			StatemachineActionFieldKeystroke: {
+				return '''«identation(level)»stateMachine.append("«action.attribute.name»", event.getId());'''
+			}
+			StatemachineActionItemVisible: {
+				return '''«identation(level)»stateMachine.enable("«action.attribute.name»", true);'''
+			}
+			StatemachineActionItemInvisible: {
+				return '''«identation(level)»stateMachine.enable("«action.attribute.name»", false);'''
+			}
+			StatemachineActionButtonCaption: {
+				return '''«identation(level)»stateMachine.caption("«action.attribute.name»", "«action.caption»");'''
+			}
+			StatemachineActionButtonImage: {
+				return '''«identation(level)»stateMachine.image("«action.attribute.name»", "«action.image»");'''
+			}
+			StatemachineActionDTOFind: {
+				return '''«identation(level)»stateMachine.find("«action.dto.attributeType.attributeType.name»", "«action.attribute.inheritedFeature.name»", «action.search.concatenation»);'''
+			}
+			StatemachineStorage: {
+				return '''«identation(level)»stateMachine.putStorage("«action.key»","«action.attribute»", «action.content.concatenation»);'''
+			}
+			StatemachineActionScheduler: {
+				return '''«identation(level)»stateMachine.set("«action.scheduler.name»Scheduler", «action.scheduler.delay»L);'''
+			}
+			StatemachineOperation: {
+				return '''«action.decodeOperation(level)»'''
+			}
+			StatemachineActionConditionalTransition: {
+				return 
+				'''
+				«action.guard.decodeGuard(level)»
+				«FOR act:action.actions»
+				«act.switchAction(level+1)»
+				«ENDFOR»
+				«identation(level+1)»return «action.transition.name»;
+				«identation(level)»}'''
+			}
+		}
+	}
+
+	def concatenation(StatemachineActionFieldConcatenation concatenation) {
+		return concatenation(concatenation, null)
+	}
+	
+	def concatenation(StatemachineActionFieldConcatenation concatenation, JvmTypeReference cast) 
+	'''«concatenation.first.concatenationDecode(cast)»«FOR element : concatenation.more»+«element.
+		concatenationDecode(cast)»«ENDFOR»'''
+
+	def concatenationDecode(StatemachineActionFieldSource action, JvmTypeReference cast) {
+		switch action {
+			StatemachineActionFieldSourceString: {
+				return '''"«action.text»"'''
+			}
+			StatemachineActionFieldSourceNumber: {
+				return '''«action.value»'''
+			}
+			StatemachineActionFieldSourceEvaluate: {
+				return '''stateMachine.«action.evaluationtype.literal»()'''
+			}
+			StatemachineActionFieldSourceEvent: {
+				return '''event.getId()'''
+			}
+			StatemachineActionFieldSourceTranslate: {
+				return '''stateMachine.getTranslation("«action.text»")'''
+			}
+			StatemachineActionFieldGet: {
+				return '''«IF cast != null && 
+				!cast.simpleName.equals(action.attribute.attributeType.attributeType.literal) && 
+				(action.attribute.attributeType.attributeType.literal.equals("String") ||
+				action.attribute.attributeType.attributeType.literal.equals("SuggestText"))»«cast.simpleName».parse«cast.simpleName»((String)«ENDIF»stateMachine.get("«action.attribute.name»")«IF cast != null && cast.simpleName.equals("String") && !action.attribute.attributeType.attributeType.literal.equals("String")».toString()«ENDIF»«IF cast != null && 
+				!cast.simpleName.equals(action.attribute.attributeType.attributeType.literal) &&
+				(action.attribute.attributeType.attributeType.literal.equals("String") ||
+				action.attribute.attributeType.attributeType.literal.equals("SuggestText"))»)«ENDIF»'''
+			}
+			StatemachineOperation: {
+				return action.decodeOperation(0)
+			}
+			StatemachineFunction: {
+				return action.decodeFunction(0)
+			}
+			StatemachineStorageRetrieve: {
+				return '''«IF cast != null»(«cast.qualifiedName»)«ENDIF»stateMachine.getStorage("«action.key»", "«action.attribute»")'''
+			}
+			StatemachineActionFieldSourceDtoAttribute: {
+				return '''stateMachine.get("«action.dto.attributeType.attributeType.name»«action.attribute.inheritedFeature.name.toFirstUpper»")«IF cast != null && cast.simpleName.equals("String")».toString()«ENDIF»'''
+			}
+			StatemachineActionPeripheralPTResponse: {
+				return '''stateMachine.get("PaymentTerminalResponse")'''
+			}
+//			StatemachineActionPeripheralPTBalanceRequest: {
+//				return '''stateMachine.get("paymentDeviceBalanceRequest")'''
+//			}
+		}
+	}
+	
+	def decodeOperation(StatemachineOperation operation, int level) {
+		return decodeOperation(operation, false, level)
+	}
+	
+	def String decodeOperation(StatemachineOperation operation, boolean isIdentity, int level)
+		'''
+		«identation(level)»if(!((boolean)«call(operation as EObject, operation.operation.name, StatemachineEnums.Functions.OPERATION, operation.first, operation.more, isIdentity)»)) {
+		«identation(level)»	Notification.show("Operation failed", "«operation.operation.name»", Type.ERROR_MESSAGE);
+		«identation(level)»	return this;	
+		«identation(level)»}'''
+
+	def String decodeFunction(StatemachineFunction function, int level)
+		'''
+		«identation(level)»«call(function as EObject, function.function.name, StatemachineEnums.Functions.FUNCTION, function.first, function.more, false)»'''
+
+	def call(EObject parent, String name, StatemachineEnums.Functions function, StatemachineOperationParameter first, StatemachineOperationParameter[] more, boolean isIdentity) {
+		// find some parents
+		var Statemachine statemachine = null
+		var eObj = parent
+		while (!(eObj instanceof StatemachinePackage)) {
+			if (eObj instanceof Statemachine) {
+				statemachine = eObj as Statemachine
+			}
+			eObj = eObj.eContainer
+		}
+		if (eObj instanceof StatemachinePackage) {
+			switch function {
+				case GUARD:
+					return '''«eObj.name + "." + eObj.fullyQualifiedName.lastSegment.toFirstUpper»«binderPostfix».getFunctionLibraryService().guard(stateMachine, "«statemachine.functionGroup.fullyQualifiedName»", "«name»")'''
+				case OPERATION:
+					return '''«eObj.name + "." + eObj.fullyQualifiedName.lastSegment.toFirstUpper»«binderPostfix».getFunctionLibraryService().operation(stateMachine, "«statemachine.functionGroup.fullyQualifiedName»", «name.processParameters(first, more, isIdentity)»)'''
+				case FUNCTION:
+					return '''«eObj.name + "." + eObj.fullyQualifiedName.lastSegment.toFirstUpper»«binderPostfix».getFunctionLibraryService().function(stateMachine, "«statemachine.functionGroup.fullyQualifiedName»", «name.processParameters(first, more, isIdentity)»)'''
+			}
+		} else {
+			return '''/* error: parents not found */'''
+		}
+	}
+
+	def processParameters(String name, StatemachineOperationParameter first, StatemachineOperationParameter[] more, boolean isIdentity) {
+		if(first == null) {
+			return '''"«name»"«IF isIdentity», event.getId()«ENDIF»'''
+		}
+		var body = '''"«name»", «IF isIdentity»event.getId(), «ENDIF»«first.source.concatenation»'''
+		if(more != null) {
+			for(para:more) {
+				body = '''«body», «para.source.concatenation»'''	
+			}
+		}
+		return body
+	}
+
+	def void toBinderFields(JvmDeclaredType type, StatemachinePackage datamart) {
+		var JvmField field = null
+
+		// create logger
+		field = datamart.toField("log", _typeReferenceBuilder.typeRef(Logger))[
+			setInitializer([append('''org.slf4j.LoggerFactory.getLogger("servicebinder")''')])]
+		field.static = true
+		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = datamart.toField("functionLibraryService", _typeReferenceBuilder.typeRef(IFunctionLibraryService))
+		field.static = true
+		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+	}
+
+	def void toBinderOperations(JvmDeclaredType type, StatemachinePackage datamart) {
+		var JvmOperation operation
+
+		type.members += datamart.toMethod("getFunctionLibraryService",
+			_typeReferenceBuilder.typeRef(IFunctionLibraryService),
+			[
+				visibility = JvmVisibility.PUBLIC
+				static = true
+				body = [append('''return functionLibraryService;''')]
+			])
+
+		// bind services
+		type.members += datamart.toMethod("bindFunctionLibraryService", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
+				annotationRef.addAnnAttr(datamart, "cardinality", ReferenceCardinality.MANDATORY)
+				annotationRef.addAnnAttr(datamart, "policy", ReferencePolicy.STATIC)
+				annotations += annotationRef
+				visibility = JvmVisibility.PUBLIC
+				synchronized = true
+				parameters +=
+					datamart.toParameter("functionLibraryService",
+						_typeReferenceBuilder.typeRef(IFunctionLibraryService))
+				body = [
+					append(
+						'''
+						this.functionLibraryService = functionLibraryService;
+						log.debug("Statemachine FunctionLibraryServiceService bound");''')]
+			])
+
+		// unbind services
+		type.members += datamart.toMethod("unbindFunctionLibraryService", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				visibility = JvmVisibility.PUBLIC
+				synchronized = true
+				parameters +=
+					datamart.toParameter("functionLibraryService",
+						_typeReferenceBuilder.typeRef(IFunctionLibraryService))
+				body = [
+					append(
+						'''
+						this.functionLibraryService = null;
+						log.debug("Statemachine FunctionLibraryServiceService unbound");''')]
+			])
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.xtend
new file mode 100644
index 0000000..877bd07
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.xtend
@@ -0,0 +1,106 @@
+package org.eclipse.osbp.xtext.statemachine.jvmmodel
+
+import java.util.Locale
+import java.util.ResourceBundle
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.osbp.runtime.common.i18n.ITranslator
+import org.eclipse.osbp.abstractstatemachine.AbstractStateMachine
+import org.eclipse.osbp.ui.api.message.MessageEvent
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage
+import org.eclipse.xtext.common.types.JvmEnumerationLiteral
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig
+import org.eclipse.xtext.xbase.compiler.ImportManager
+import org.eclipse.xtext.xbase.compiler.XbaseCompiler
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator
+import org.osgi.service.useradmin.User
+import jpos.LineDisplayConst
+import jpos.POSPrinterConst
+import org.eclipse.osbp.abstractstatemachine.TaskEventSource
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType
+import org.eclipse.osbp.ecview.core.^extension.model.^extension.YSuggestTextFieldEvents
+import org.joda.time.DateTime
+import com.vaadin.ui.Notification
+import java.util.List
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService
+
+class StatemachineDSLModelGenerator extends I18NModelGenerator {
+	@Inject extension BasicDslGeneratorUtils
+	@Inject extension JvmModelAssociator
+	@Inject XbaseCompiler compiler
+	
+	var public static String pckgName = null
+	
+	def void generatePckgName(StatemachinePackage pckg, IJvmDeclaredTypeAcceptor acceptor) {
+		pckgName = pckg.getName
+	}
+
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+//		addTranslatables("Groups,Users")
+		super.doGenerate(input, fsa)
+	}
+	
+	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
+		// required to initialize the needed builder to avoid deprecated methods
+		builder = context.eResource
+		// ---------
+		addImportFor(importManager, _typeReferenceBuilder
+			,User
+			,ResourceBundle
+			,Locale
+			,List
+			,ITranslator
+			,AbstractStateMachine
+			,IStateMachine
+			,MessageEvent
+			,MessageEvent.EventType
+			,TaskEventSource
+			,LineDisplayConst
+			,POSPrinterConst
+			,ThemeResourceType
+			,YSuggestTextFieldEvents
+			,DateTime
+			,Notification
+			,Notification.Type
+			,IDTOService
+		)
+		super.createAppendable(context, importManager, config)
+	}
+		
+	def void generateInitialization(JvmEnumerationLiteral it, ITreeAppendable appendable, GeneratorConfig config) {
+		if (compilationStrategy != null) {
+			appendable.append(" { ")
+			appendable.increaseIndentation
+			appendable.newLine
+			compilationStrategy.apply(appendable)
+			appendable.decreaseIndentation
+			appendable.newLine
+			appendable.append("}")
+		} else {
+			val expression = associatedExpression
+			if (expression != null && config.generateExpressions) {
+				if(expression.hasErrors()) {
+					appendable.append(" /* Skipped initializer because of errors */")
+				} else {
+					appendable.append(" = ")
+					compiler.compileAsJavaExpression(expression, appendable, type)
+				}
+			}
+		}
+	}
+
+	override generateEnumLiteral(JvmEnumerationLiteral it, ITreeAppendable appendable, GeneratorConfig config) {
+		appendable.newLine
+		generateJavaDoc(appendable, config)
+		annotations.generateAnnotations(appendable, true, config)
+		appendable.append(simpleName)
+		generateInitialization(appendable, config)
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/package-info.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/package-info.java
new file mode 100644
index 0000000..ecbed1d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/package-info.java
@@ -0,0 +1,25 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG                               
+ * 
+ */
+
+/**
+ * 
+ *  Implements the OSBP Xtext state machine DSL. Constructs state machines
+ *  
+ *   
+ *  @since  0.9.0
+ *  
+ *  <p>The Statemachine Grammar Xtext Syntax Graph<br>
+ *  <img src="doc-files/grammar.png" alt="The Statemachine Grammar Xtext Syntax Graph">
+ */
+package org.eclipse.osbp.xtext.statemachine;
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.xtend
new file mode 100644
index 0000000..4665fe6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.xtend
@@ -0,0 +1,401 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 2016 - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.statemachine.scoping
+
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter
+import org.eclipse.osbp.xtext.statemachine.Statemachine
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage
+import org.eclipse.osbp.xtext.statemachine.StatemachineEnums
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve
+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.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport
+import org.eclipse.xtext.xbase.XBlockExpression
+import org.eclipse.xtext.xbase.XMemberFeatureCall
+import java.util.List
+import org.eclipse.xtext.xbase.XStringLiteral
+import org.eclipse.xtext.xbase.XFeatureCall
+import org.eclipse.xtext.xbase.XIfExpression
+import org.eclipse.xtext.xbase.XExpression
+import java.util.ArrayList
+import org.eclipse.osbp.xtext.statemachine.StatemachineEnums.StorageAccess
+
+class StatemachineDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+	override getScope(EObject context, EReference reference) {
+		switch reference {
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD:
+				return getFunctionService(context, StatemachineEnums.Functions.GUARD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION__OPERATION:
+				return getFunctionService(context, StatemachineEnums.Functions.OPERATION)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_GUARD__GUARD:
+				return getFunctionService(context, StatemachineEnums.Functions.GUARD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_FUNCTION__FUNCTION:
+				return getFunctionService(context, StatemachineEnums.Functions.FUNCTION)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_STATE__IDENTITY:
+				return getFunctionService(context, StatemachineEnums.Functions.OPERATION)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_STATE__KEYSTROKE:
+				return getStringFields(context)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_STATE__KEY_OPERATION:
+				return getFunctionService(context, StatemachineEnums.Functions.OPERATION)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.LINEDISPLAY)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.CASHDRAWER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.POSPRINTER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.POSPRINTER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.POSPRINTER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.POSPRINTER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.POSPRINTER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+//			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_BALANCE_REQUEST__DEVICE:
+//				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+//			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_PREPAID_TOP_UP__DEVICE:
+//				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE:
+				return getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.BUTTON)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.BUTTON)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.FIELD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.FIELD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.FIELD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.FIELD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.FIELD)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.ITEM)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE:
+				return getActions(context, StatemachineEnums.Controls.ITEM)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__DTO:
+				return getActions(context, StatemachineEnums.Controls.DTO)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE:
+				return getFindDTOAttributes(context)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO:
+				return getDTO(context)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE:
+				return getDTOAttributes(context)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER:
+				return getActions(context, StatemachineEnums.Controls.SCHEDULER)
+			case StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY:
+				return getStorageKey(context, StatemachineEnums.StorageAccess.KEY)
+//			case StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__KEY:
+//				return getStorageKey(context, StatemachineEnums.StorageAccess.KEY)
+//			case StatemachineDSLPackage.Literals.STATEMACHINE_STORAGE_RETRIEVE__ATTRIBUTE:
+//				return getStorageKey(context, StatemachineEnums.StorageAccess.ATTRIBUTE)
+			default:
+				super.getScope(context, reference)
+		}
+	}
+	
+//	def void iterateBlockExpression(XExpression expression, ArrayList<IEObjectDescription> result, StorageAccess access) {
+//		if(expression instanceof XIfExpression) {
+//		}
+//		if(expression instanceof XMemberFeatureCall) {
+//			if(expression.memberCallTarget instanceof XFeatureCall) {
+//				var callTarget = expression.memberCallTarget as XFeatureCall 
+//				if(callTarget.feature.identifier.contains("IStateMachine.putStorage")) {
+//					val params = <String>newArrayList
+//					expression.memberCallArguments.forEach[
+//						if(it instanceof XStringLiteral) {
+//							params.add(it.value)
+//						}
+//					]
+//					switch (access) {
+//						case KEY:
+//							result.add(EObjectDescription.create(params.get(0), expression))
+//						case ATTRIBUTE:
+//							result.add(EObjectDescription.create(params.get(1), expression))
+//					}
+//				}
+//			}
+//		}
+//	}
+	
+	def IScope getStorageKey(EObject context, StatemachineEnums.StorageAccess access) {
+		val result = <IEObjectDescription>newArrayList
+		var statemachine = context
+		while (statemachine != null && !(statemachine instanceof Statemachine)) {
+			statemachine = statemachine.eContainer
+		}
+		if (statemachine != null && statemachine instanceof Statemachine) {
+			(statemachine as Statemachine).states.forEach[
+				it.triggers.forEach[
+					it.actions.forEach [
+						if(it instanceof StatemachineStorage) {
+							switch (access) {
+								case KEY:
+									result.add(EObjectDescription.create(it.key, it))
+								case ATTRIBUTE:
+									result.add(EObjectDescription.create(it.attribute, it))
+							}
+						}
+					]
+				]
+			]
+//			(statemachine as Statemachine).functionGroup.operations.forEach[
+//				var opName = it.name
+//				if("computeButtons".equals(opName)) {
+//					if(it.body instanceof XBlockExpression) {
+//						(it.body as XBlockExpression).expressions.forEach[
+//							it.iterateBlockExpression(result, access)
+//						]
+//					}
+//				}
+//			]
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+	
+	def IScope getStringFields(EObject context) {
+		var result = <IEObjectDescription>newArrayList
+		var statemachine = context as EObject
+		while (statemachine != null && !(statemachine instanceof Statemachine)) {
+			statemachine = statemachine.eContainer
+		}
+		if (statemachine != null && (statemachine instanceof Statemachine) && ((statemachine as Statemachine).controls != null)) {
+			for (control : (statemachine as Statemachine).controls) {
+				if (control instanceof StatemachineControlField) {
+					for (field : (control as StatemachineControlField).fields) {
+						if(field.attributeType.attributeType == StatemachineInternalType.STRING ||
+							field.attributeType.attributeType == StatemachineInternalType.SUGGESTTEXT) {
+							result.add(EObjectDescription.create(field.name, field))
+						}
+					}
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+
+	def IScope getDTOAttributes(EObject context) {
+		var dtoFind = context as StatemachineActionFieldSourceDtoAttribute
+		var dto = dtoFind.dto.attributeType.attributeType as LDto
+		return dto.scopeDTOAttributes(context)
+	}
+
+	def IScope getDTO(EObject context) {
+		var result = <IEObjectDescription>newArrayList
+		var statemachine = context as EObject
+		while (statemachine != null && !(statemachine instanceof Statemachine)) {
+			statemachine = statemachine.eContainer
+		}
+		if (statemachine != null && (statemachine instanceof Statemachine) && ((statemachine as Statemachine).controls != null)) {
+			for (control : (statemachine as Statemachine).controls) {
+				if(control instanceof StatemachineControlDTO) {
+					for(dto:control.dtos) {
+						result.add(EObjectDescription.create(dto.name, dto))
+					}
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+	
+	def IScope getFindDTOAttributes(EObject context) {
+		var dtoFind = context as StatemachineActionDTOFind
+		var dto = dtoFind.dto.attributeType.attributeType as LDto
+		return dto.scopeDTOAttributes(context)
+	}
+	
+	def IScope scopeDTOAttributes(LDto dto, EObject context) {
+		var result = <IEObjectDescription>newArrayList
+		if (dto != null) {
+			for (f : dto.allFeatures) {
+				if (f instanceof LDtoInheritedAttribute) {
+					var LEntityAttribute attr = null
+					if (f.inheritedFeature.eIsProxy()) {
+
+						// This provokes no problems of loops or cycling linking.
+						val uri = (f.inheritedFeature as InternalEObject).eProxyURI
+						attr = context.eResource.resourceSet.getEObject(uri, true) as LEntityAttribute
+					} else {
+						attr = f.inheritedFeature as LEntityAttribute
+					}
+					result.add(EObjectDescription.create(attr.name, f as LDtoInheritedAttribute))
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+
+	def IScope getActions(EObject context, StatemachineEnums.Controls controlType) {
+		var result = <IEObjectDescription>newArrayList
+		var statemachine = context as EObject
+		while (statemachine != null && !(statemachine instanceof Statemachine)) {
+			statemachine = statemachine.eContainer
+		}
+		if (statemachine != null && (statemachine instanceof Statemachine) && ((statemachine as Statemachine).controls != null)) {
+			for (control : (statemachine as Statemachine).controls) {
+				if (controlType == StatemachineEnums.Controls.BUTTON && control instanceof StatemachineControlButton) {
+					for (button : (control as StatemachineControlButton).buttons) {
+						result.add(EObjectDescription.create(button.name, button))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.SCHEDULER && control instanceof StatemachineControlScheduler) {
+					for (scheduler : (control as StatemachineControlScheduler).schedulers) {
+						result.add(EObjectDescription.create(scheduler.name, scheduler))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.FIELD && control instanceof StatemachineControlField) {
+					for (field : (control as StatemachineControlField).fields) {
+						result.add(EObjectDescription.create(field.name, field))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.ITEM && (control instanceof StatemachineControlButton || control instanceof StatemachineControlField)) {
+					if(control instanceof StatemachineControlButton) {
+						for (button : (control as StatemachineControlButton).buttons) {
+							result.add(EObjectDescription.create(button.name, button))
+						}
+						result.add(EObjectDescription.create(control.name, control))
+					}
+					if(control instanceof StatemachineControlField) {
+						for (field : (control as StatemachineControlField).fields) {
+							result.add(EObjectDescription.create(field.name, field))
+						}
+						for (layout : (control as StatemachineControlField).layouts) {
+							result.add(EObjectDescription.create(layout.name, layout))
+						}
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.DTO && control instanceof StatemachineControlDTO) {
+					for (dto : (control as StatemachineControlDTO).dtos) {
+						result.add(EObjectDescription.create(dto.name, dto))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.LINEDISPLAY && control instanceof StatemachineControlPeripheral) {
+					for (element : (control as StatemachineControlPeripheral).lineDisplays) {
+						result.add(EObjectDescription.create(element.name, element))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.POSPRINTER && control instanceof StatemachineControlPeripheral) {
+					for (element : (control as StatemachineControlPeripheral).posPrinters) {
+						result.add(EObjectDescription.create(element.name, element))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.CASHDRAWER && control instanceof StatemachineControlPeripheral) {
+					for (element : (control as StatemachineControlPeripheral).cashDrawers) {
+						result.add(EObjectDescription.create(element.name, element))
+					}
+				}
+				if (controlType == StatemachineEnums.Controls.PAYMENTTERMINAL && control instanceof StatemachineControlPeripheral) {
+					for (element : (control as StatemachineControlPeripheral).paymentTerminals) {
+						result.add(EObjectDescription.create(element.name, element))
+					}
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+
+	def IScope 	getFunctionService(EObject context, StatemachineEnums.Functions function) {
+		var result = <IEObjectDescription>newArrayList
+		var statemachine = context as EObject
+		while (statemachine != null && !(statemachine instanceof Statemachine)) {
+			statemachine = statemachine.eContainer
+		}
+		if (statemachine != null && (statemachine instanceof Statemachine) && ((statemachine as Statemachine).functionGroup != null)) {
+			switch function {
+				case GUARD:
+					for (FunctionLibraryGuard element : (statemachine as Statemachine).functionGroup.guards) {
+						result.add(EObjectDescription.create(element.name, (element as FunctionLibraryGuard)))
+					}
+				case OPERATION:	
+					for (FunctionLibraryOperation element : (statemachine as Statemachine).functionGroup.operations) {
+						result.add(EObjectDescription.create(element.name, (element as FunctionLibraryOperation)))
+					}
+				case FUNCTION:
+					for (FunctionLibraryFunction element : (statemachine as Statemachine).functionGroup.functions) {
+						if(element.params.size > 0) {
+							var first = element.params.get(0) as FunctionLibraryParameter
+							if("IStateMachine".equals(first.parameterType.simpleName)) {
+								result.add(EObjectDescription.create(element.name, (element as FunctionLibraryFunction)))
+							}
+						}
+					}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.xtend
new file mode 100644
index 0000000..b56f30b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.xtend
@@ -0,0 +1,24 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.validation
+//import org.eclipse.xtext.validation.Check
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+class StatemachineDSLValidator extends AbstractStatemachineDSLValidator {
+
+//  public static val INVALID_NAME = 'invalidName'
+//
+//	@Check
+//	def checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
+//			warning('Name should start with a capital', 
+//					MyDslPackage.Literals.GREETING__NAME,
+//					INVALID_NAME)
+//		}
+//	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLQualifiedNameProvider.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLQualifiedNameProvider.java
new file mode 100644
index 0000000..9f1df73
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLQualifiedNameProvider.java
@@ -0,0 +1,37 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.statemachine.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class StatemachineDSLQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLValueConverterService.java b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLValueConverterService.java
new file mode 100644
index 0000000..74e1ec6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/valueconverter/StatemachineDSLValueConverterService.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.statemachine.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 StatemachineDSLValueConverterService 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.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/.StatemachineDSLFormatter.java._trace b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/.StatemachineDSLFormatter.java._trace
new file mode 100644
index 0000000..109b56b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/.StatemachineDSLFormatter.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.java
new file mode 100644
index 0000000..999434e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/formatting/StatemachineDSLFormatter.java
@@ -0,0 +1,32 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.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 StatemachineDSLFormatter 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, "Statemachine", "StatemachineImport");
+    genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLJvmModelInferrer.java._trace b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLJvmModelInferrer.java._trace
new file mode 100644
index 0000000..73ac2ef
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLJvmModelInferrer.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLModelGenerator.java._trace b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLModelGenerator.java._trace
new file mode 100644
index 0000000..f716084
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/.StatemachineDSLModelGenerator.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java
new file mode 100644
index 0000000..7e4a45d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java
@@ -0,0 +1,3801 @@
+/**
+ * Copyright (c) 2011, 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.statemachine.jvmmodel;
+
+import com.google.common.base.Objects;
+import com.google.inject.Inject;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Timer;
+import java.util.function.Consumer;
+import java.util.regex.Pattern;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.abstractstatemachine.AbstractDataProvider;
+import org.eclipse.osbp.abstractstatemachine.AbstractEventSource;
+import org.eclipse.osbp.abstractstatemachine.AbstractPeripheralService;
+import org.eclipse.osbp.abstractstatemachine.AbstractStateMachine;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextFieldEvents;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryService;
+import org.eclipse.osbp.ui.api.message.MessageEvent;
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+import org.eclipse.osbp.xtext.reportdsl.Report;
+import org.eclipse.osbp.xtext.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineAction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonCaption;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionButtonImage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionConditionalTransition;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldConcatenation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldGet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldKeystroke;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldRemove;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSet;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSource;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvaluate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceNumber;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceString;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceTranslate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemInvisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionItemVisible;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralBlinkRate;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralClear;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCreateWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDestroyWindow;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDeviceBrightness;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayText;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralDisplayTextAt;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralInterCharacterWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeRepeatWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralMarqueeUnitWait;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralOpenDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAcknowledge;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTAuthorization;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTClose;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTOpen;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTRegistration;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTResponse;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPTReversal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBarcode;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintCut;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintNormal;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintRegisterBitmap;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralPrintReport;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionPeripheralScroll;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControl;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventIdentity;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttributeEventKeyboard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlVisibility;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEnums;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvaluationType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEvent;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFunction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineGuard;
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayCursorType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeFormat;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayMarqueeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayScrollTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineLineDisplayTextType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperation;
+import org.eclipse.osbp.xtext.statemachine.StatemachineOperationParameter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePOSPrinterBarcodeType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorageRetrieve;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+import org.eclipse.osbp.xtext.statemachine.StatemachineUserMessageType;
+import org.eclipse.osbp.xtext.statemachine.jvmmodel.StatemachineDSLModelGenerator;
+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.JvmEnumerationLiteral;
+import org.eclipse.xtext.common.types.JvmEnumerationType;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmMember;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.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.Conversions;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+
+/**
+ * <p>
+ * Statemachine
+ * This inferrer infers models of extension statemachine and generates code for a enum based statemachine
+ * </p>
+ * 
+ * @author Joerg Riegel
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLJvmModelInferrer extends AbstractModelInferrer {
+  @Inject
+  @Extension
+  private JvmTypesBuilder _jvmTypesBuilder;
+  
+  @Inject
+  @Extension
+  private StatemachineDSLModelGenerator _statemachineDSLModelGenerator;
+  
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
+  @Inject
+  @Extension
+  private AnnotationExtension _annotationExtension;
+  
+  @Inject
+  @Extension
+  private ModelExtensions _modelExtensions;
+  
+  private final String binderPostfix = "ServiceBinder";
+  
+  protected void _infer(final StatemachinePackage statemachinePkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    this._statemachineDSLModelGenerator.generatePckgName(statemachinePkg, acceptor);
+    String _name = statemachinePkg.getName();
+    String _string = _name.toString();
+    String _concat = _string.concat(this.binderPostfix);
+    final JvmGenericType bindercls = this._jvmTypesBuilder.toClass(statemachinePkg, _concat);
+    String _simpleName = bindercls.getSimpleName();
+    String _firstUpper = StringExtensions.toFirstUpper(_simpleName);
+    bindercls.setSimpleName(_firstUpper);
+    final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+      public void apply(final JvmGenericType it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations();
+        JvmAnnotationReference _annotationRef_1 = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Component.class);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1);
+        QualifiedName _fullyQualifiedName = StatemachineDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(statemachinePkg);
+        String _string = _fullyQualifiedName.toString();
+        it.setPackageName(_string);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+        StatemachineDSLJvmModelInferrer.this.toBinderFields(it, statemachinePkg);
+        StatemachineDSLJvmModelInferrer.this.toBinderOperations(it, statemachinePkg);
+      }
+    };
+    acceptor.<JvmGenericType>accept(bindercls, _function);
+    EList<Statemachine> _statemachines = statemachinePkg.getStatemachines();
+    for (final Statemachine statemachine : _statemachines) {
+      {
+        String _className = this.className(statemachine);
+        final String clsName = StringExtensions.toFirstUpper(_className);
+        final JvmGenericType cls = this._jvmTypesBuilder.toClass(statemachinePkg, clsName);
+        EList<JvmTypeReference> _superTypes = cls.getSuperTypes();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(AbstractStateMachine.class);
+        _superTypes.add(_typeRef);
+        String _simpleName_1 = cls.getSimpleName();
+        String _firstUpper_1 = StringExtensions.toFirstUpper(_simpleName_1);
+        cls.setSimpleName(_firstUpper_1);
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(statemachinePkg);
+        String _string_1 = _fullyQualifiedName.toString();
+        String _plus = (_string_1 + ".");
+        String _lowerCase = clsName.toLowerCase();
+        final String pkgName = (_plus + _lowerCase);
+        final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
+          public void apply(final JvmGenericType it) {
+            StatemachineDSLJvmModelInferrer.this.toConstructor(it, statemachine);
+            StatemachineDSLJvmModelInferrer.this.toFields(it, statemachine);
+            StatemachineDSLJvmModelInferrer.this.toOperations(it, statemachine);
+            it.setPackageName(pkgName);
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+          }
+        };
+        acceptor.<JvmGenericType>accept(cls, _function_1);
+        EList<StatemachineControl> _controls = statemachine.getControls();
+        for (final StatemachineControl control : _controls) {
+          {
+            String _name_1 = control.getName();
+            String _string_2 = _name_1.toString();
+            final String controlClsName = StringExtensions.toFirstUpper(_string_2);
+            final JvmGenericType controlCls = this._jvmTypesBuilder.toClass(statemachinePkg, controlClsName);
+            String _simpleName_2 = controlCls.getSimpleName();
+            String _firstUpper_2 = StringExtensions.toFirstUpper(_simpleName_2);
+            controlCls.setSimpleName(_firstUpper_2);
+            boolean _matched = false;
+            if (!_matched) {
+              if (control instanceof StatemachineControlScheduler) {
+                _matched=true;
+                EList<JvmTypeReference> _superTypes_1 = controlCls.getSuperTypes();
+                JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(AbstractEventSource.class);
+                _superTypes_1.add(_typeRef_1);
+                final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+                  public void apply(final JvmGenericType it) {
+                    StatemachineDSLJvmModelInferrer.this.generateSchedulers(it, ((StatemachineControlScheduler)control));
+                    it.setPackageName(pkgName);
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+                  }
+                };
+                acceptor.<JvmGenericType>accept(controlCls, _function_2);
+              }
+            }
+            if (!_matched) {
+              if (control instanceof StatemachineControlButton) {
+                _matched=true;
+                EList<JvmTypeReference> _superTypes_1 = controlCls.getSuperTypes();
+                JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(AbstractEventSource.class);
+                _superTypes_1.add(_typeRef_1);
+                final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+                  public void apply(final JvmGenericType it) {
+                    StatemachineDSLJvmModelInferrer.this.generateButtons(it, ((StatemachineControlButton)control));
+                    it.setPackageName(pkgName);
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+                  }
+                };
+                acceptor.<JvmGenericType>accept(controlCls, _function_2);
+              }
+            }
+            if (!_matched) {
+              if (control instanceof StatemachineControlField) {
+                _matched=true;
+                EList<JvmTypeReference> _superTypes_1 = controlCls.getSuperTypes();
+                JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(AbstractEventSource.class);
+                _superTypes_1.add(_typeRef_1);
+                final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+                  public void apply(final JvmGenericType it) {
+                    StatemachineDSLJvmModelInferrer.this.generateFields(it, ((StatemachineControlField)control));
+                    it.setPackageName(pkgName);
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+                  }
+                };
+                acceptor.<JvmGenericType>accept(controlCls, _function_2);
+              }
+            }
+            if (!_matched) {
+              if (control instanceof StatemachineControlDTO) {
+                _matched=true;
+                EList<JvmTypeReference> _superTypes_1 = controlCls.getSuperTypes();
+                JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(AbstractDataProvider.class);
+                _superTypes_1.add(_typeRef_1);
+                final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+                  public void apply(final JvmGenericType it) {
+                    StatemachineDSLJvmModelInferrer.this.generateDTOs(it, ((StatemachineControlDTO)control));
+                    it.setPackageName(pkgName);
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+                  }
+                };
+                acceptor.<JvmGenericType>accept(controlCls, _function_2);
+              }
+            }
+            if (!_matched) {
+              if (control instanceof StatemachineControlPeripheral) {
+                _matched=true;
+                EList<JvmTypeReference> _superTypes_1 = controlCls.getSuperTypes();
+                JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(AbstractPeripheralService.class);
+                _superTypes_1.add(_typeRef_1);
+                final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+                  public void apply(final JvmGenericType it) {
+                    it.setPackageName(pkgName);
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+                  }
+                };
+                acceptor.<JvmGenericType>accept(controlCls, _function_2);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public boolean generateSchedulers(final JvmGenericType controlCls, final StatemachineControlScheduler control) {
+    boolean _xblockexpression = false;
+    {
+      EList<StatemachineControlSchedulerAttribute> _schedulers = control.getSchedulers();
+      final Consumer<StatemachineControlSchedulerAttribute> _function = new Consumer<StatemachineControlSchedulerAttribute>() {
+        public void accept(final StatemachineControlSchedulerAttribute it) {
+          String _name = it.getName();
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Timer.class);
+          JvmField field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _name, _typeRef);
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+          String _name_1 = it.getName();
+          String _plus = (_name_1 + "Scheduler");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Long.class);
+          JvmField _field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus, _typeRef_1);
+          field = _field;
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+        }
+      };
+      _schedulers.forEach(_function);
+      EList<StatemachineControlSchedulerAttribute> _schedulers_1 = control.getSchedulers();
+      final Consumer<StatemachineControlSchedulerAttribute> _function_1 = new Consumer<StatemachineControlSchedulerAttribute>() {
+        public void accept(final StatemachineControlSchedulerAttribute it) {
+          String _name = it.getName();
+          String _plus = (_name + "Scheduler");
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Long.class);
+          JvmOperation operation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus, _typeRef);
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+          final StatemachineControlSchedulerAttribute scheduler = it;
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("set");
+          String _name_1 = it.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+          _builder.append(_firstUpper, "");
+          _builder.append("Scheduler");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              it.setVisibility(JvmVisibility.PUBLIC);
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Long.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, "delay", _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("if (");
+                  String _name = scheduler.getName();
+                  _builder.append(_name, "");
+                  _builder.append(" != null) {");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("\t");
+                  String _name_1 = scheduler.getName();
+                  _builder.append(_name_1, "\t");
+                  _builder.append(".cancel();");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("\t");
+                  String _name_2 = scheduler.getName();
+                  _builder.append(_name_2, "\t");
+                  _builder.append(".purge();");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("}");
+                  _builder.newLine();
+                  String _name_3 = scheduler.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append(" = new Timer();");
+                  _builder.newLineIfNotEmpty();
+                  String _name_4 = scheduler.getName();
+                  _builder.append(_name_4, "");
+                  _builder.append(".schedule(new TaskEventSource(statemachine, new MessageEvent(EventType.TRIGGER, \"");
+                  StatemachineEvent _event = scheduler.getEvent();
+                  String _name_5 = _event.getName();
+                  _builder.append(_name_5, "");
+                  _builder.append("\")), this.");
+                  String _name_6 = scheduler.getName();
+                  _builder.append(_name_6, "");
+                  _builder.append("Scheduler = delay);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef_1, _function);
+          operation = _method;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+        }
+      };
+      _schedulers_1.forEach(_function_1);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+          it.setVisibility(JvmVisibility.PUBLIC);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+            }
+          };
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation init = this._jvmTypesBuilder.toMethod(control, "init", _typeRef, _function_2);
+      EList<JvmMember> _members = controlCls.getMembers();
+      _xblockexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members, init);
+    }
+    return _xblockexpression;
+  }
+  
+  public boolean generateButtons(final JvmGenericType controlCls, final StatemachineControlButton control) {
+    boolean _xblockexpression = false;
+    {
+      String _name = control.getName();
+      String _firstLower = StringExtensions.toFirstLower(_name);
+      String _plus = (_firstLower + "Enabled");
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Boolean.class);
+      JvmField pad = this._jvmTypesBuilder.toField(control, _plus, _typeRef);
+      pad.setVisibility(JvmVisibility.PRIVATE);
+      EList<JvmMember> _members = controlCls.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members, pad);
+      EList<StatemachineControlButtonAttribute> _buttons = control.getButtons();
+      final Consumer<StatemachineControlButtonAttribute> _function = new Consumer<StatemachineControlButtonAttribute>() {
+        public void accept(final StatemachineControlButtonAttribute it) {
+          String _name = it.getName();
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Number.class);
+          JvmField field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _name, _typeRef);
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+          String _name_1 = it.getName();
+          String _plus = (_name_1 + "Caption");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmField _field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus, _typeRef_1);
+          field = _field;
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+          String _name_2 = it.getName();
+          String _plus_1 = (_name_2 + "Enabled");
+          JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmField _field_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus_1, _typeRef_2);
+          field = _field_1;
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members_2 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+          String _name_3 = it.getName();
+          String _plus_2 = (_name_3 + "Image");
+          JvmTypeReference _typeRef_3 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Object.class);
+          JvmField _field_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus_2, _typeRef_3);
+          field = _field_2;
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members_3 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+        }
+      };
+      _buttons.forEach(_function);
+      EList<StatemachineControlButtonAttribute> _buttons_1 = control.getButtons();
+      final Consumer<StatemachineControlButtonAttribute> _function_1 = new Consumer<StatemachineControlButtonAttribute>() {
+        public void accept(final StatemachineControlButtonAttribute it) {
+          String _name = it.getName();
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Number.class);
+          JvmOperation operation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _name, _typeRef);
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+          final StatemachineControlButtonAttribute button = it;
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("set");
+          String _name_1 = it.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+          _builder.append(_firstUpper, "");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = button.getName();
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Number.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  {
+                    StatemachineControlButtonAttributeEvent _event = button.getEvent();
+                    if ((_event instanceof StatemachineControlButtonAttributeEventKeyboard)) {
+                      _builder.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.KEYBOARD, \"");
+                      StatemachineControlButtonAttributeEvent _event_1 = button.getEvent();
+                      String _keystroke = ((StatemachineControlButtonAttributeEventKeyboard) _event_1).getKeystroke();
+                      _builder.append(_keystroke, "");
+                      _builder.append("\"));");
+                      _builder.newLineIfNotEmpty();
+                    } else {
+                      StatemachineControlButtonAttributeEvent _event_2 = button.getEvent();
+                      if ((_event_2 instanceof StatemachineControlButtonAttributeEventIdentity)) {
+                        _builder.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.ID, \"");
+                        StatemachineControlButtonAttributeEvent _event_3 = button.getEvent();
+                        int _identity = ((StatemachineControlButtonAttributeEventIdentity) _event_3).getIdentity();
+                        _builder.append(_identity, "");
+                        _builder.append("\"));");
+                        _builder.newLineIfNotEmpty();
+                      } else {
+                        StatemachineControlButtonAttributeEvent _event_4 = button.getEvent();
+                        if ((_event_4 instanceof StatemachineControlButtonAttributeEventEvent)) {
+                          _builder.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.TRIGGER, \"");
+                          StatemachineControlButtonAttributeEvent _event_5 = button.getEvent();
+                          StatemachineEvent _event_6 = ((StatemachineControlButtonAttributeEventEvent) _event_5).getEvent();
+                          String _name = _event_6.getName();
+                          _builder.append(_name, "");
+                          _builder.append("\"));");
+                          _builder.newLineIfNotEmpty();
+                        }
+                      }
+                    }
+                  }
+                  _builder.append("this.");
+                  String _name_1 = button.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append(" = ");
+                  String _name_2 = button.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append(";");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef_1, _function);
+          operation = _method;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+          String _name_2 = it.getName();
+          String _plus = (_name_2 + "Caption");
+          JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmOperation _getter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus, _typeRef_2);
+          operation = _getter;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_2 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("set");
+          String _name_3 = it.getName();
+          String _firstUpper_1 = StringExtensions.toFirstUpper(_name_3);
+          _builder_1.append(_firstUpper_1, "");
+          _builder_1.append("Caption");
+          JvmTypeReference _typeRef_3 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = button.getName();
+              String _plus = (_name + "Caption");
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = button.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Caption\", this.");
+                  String _name_1 = button.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Caption, this.");
+                  String _name_2 = button.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Caption = ");
+                  String _name_3 = button.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Caption);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_1.toString(), _typeRef_3, _function_1);
+          operation = _method_1;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_3 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
+          String _name_4 = it.getName();
+          String _plus_1 = (_name_4 + "Enabled");
+          JvmTypeReference _typeRef_4 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmOperation _getter_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus_1, _typeRef_4);
+          operation = _getter_1;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_4 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("set");
+          String _name_5 = it.getName();
+          String _firstUpper_2 = StringExtensions.toFirstUpper(_name_5);
+          _builder_2.append(_firstUpper_2, "");
+          _builder_2.append("Enabled");
+          JvmTypeReference _typeRef_5 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = button.getName();
+              String _plus = (_name + "Enabled");
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = button.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Enabled\", this.");
+                  String _name_1 = button.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Enabled, this.");
+                  String _name_2 = button.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Enabled = ");
+                  String _name_3 = button.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Enabled);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_2.toString(), _typeRef_5, _function_2);
+          operation = _method_2;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_5 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, operation);
+          String _name_6 = it.getName();
+          String _plus_2 = (_name_6 + "Image");
+          JvmTypeReference _typeRef_6 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Object.class);
+          JvmOperation _getter_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus_2, _typeRef_6);
+          operation = _getter_2;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_6 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, operation);
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("set");
+          String _name_7 = it.getName();
+          String _firstUpper_3 = StringExtensions.toFirstUpper(_name_7);
+          _builder_3.append(_firstUpper_3, "");
+          _builder_3.append("Image");
+          JvmTypeReference _typeRef_7 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = button.getName();
+              String _plus = (_name + "Image");
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Object.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = button.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Image\", this.");
+                  String _name_1 = button.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Image, this.");
+                  String _name_2 = button.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Image = ");
+                  String _name_3 = button.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Image);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_3 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_3.toString(), _typeRef_7, _function_3);
+          operation = _method_3;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_7 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, operation);
+        }
+      };
+      _buttons_1.forEach(_function_1);
+      String _name_1 = control.getName();
+      String _firstLower_1 = StringExtensions.toFirstLower(_name_1);
+      String _plus_1 = (_firstLower_1 + "Enabled");
+      JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(Boolean.class);
+      JvmOperation getEnabled = this._jvmTypesBuilder.toGetter(control, _plus_1, _typeRef_1);
+      getEnabled.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmMember> _members_1 = controlCls.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, getEnabled);
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("set");
+      String _name_2 = control.getName();
+      String _firstUpper = StringExtensions.toFirstUpper(_name_2);
+      _builder.append(_firstUpper, "");
+      _builder.append("Enabled");
+      JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          String _name = control.getName();
+          String _firstLower = StringExtensions.toFirstLower(_name);
+          String _plus = (_firstLower + "Enabled");
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          it.setVisibility(JvmVisibility.PUBLIC);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              {
+                EList<StatemachineControlButtonAttribute> _buttons = control.getButtons();
+                for(final StatemachineControlButtonAttribute button : _buttons) {
+                  _builder.append("set");
+                  String _name = button.getName();
+                  String _firstUpper = StringExtensions.toFirstUpper(_name);
+                  _builder.append(_firstUpper, "");
+                  _builder.append("Enabled(");
+                  String _name_1 = control.getName();
+                  String _firstLower = StringExtensions.toFirstLower(_name_1);
+                  _builder.append(_firstLower, "");
+                  _builder.append("Enabled);");
+                  _builder.newLineIfNotEmpty();
+                }
+              }
+              _builder.append("pcs.firePropertyChange(\"");
+              String _name_2 = control.getName();
+              String _firstLower_1 = StringExtensions.toFirstLower(_name_2);
+              _builder.append(_firstLower_1, "");
+              _builder.append("Enabled\", this.");
+              String _name_3 = control.getName();
+              String _firstLower_2 = StringExtensions.toFirstLower(_name_3);
+              _builder.append(_firstLower_2, "");
+              _builder.append("Enabled, this.");
+              String _name_4 = control.getName();
+              String _firstLower_3 = StringExtensions.toFirstLower(_name_4);
+              _builder.append(_firstLower_3, "");
+              _builder.append("Enabled = ");
+              String _name_5 = control.getName();
+              String _firstLower_4 = StringExtensions.toFirstLower(_name_5);
+              _builder.append(_firstLower_4, "");
+              _builder.append("Enabled);");
+              _builder.newLineIfNotEmpty();
+              it.append(_builder);
+            }
+          };
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation setEnabled = this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef_2, _function_2);
+      setEnabled.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmMember> _members_2 = controlCls.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, setEnabled);
+      boolean _hasImages = false;
+      EList<StatemachineControlButtonAttribute> _buttons_2 = control.getButtons();
+      for (final StatemachineControlButtonAttribute button : _buttons_2) {
+        boolean _isHasImage = button.isHasImage();
+        if (_isHasImage) {
+          _hasImages = true;
+        }
+      }
+      final boolean hasImages = _hasImages;
+      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+          it.setVisibility(JvmVisibility.PUBLIC);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("super.init();");
+              _builder.newLine();
+              _builder.append("set");
+              String _name = control.getName();
+              String _firstUpper = StringExtensions.toFirstUpper(_name);
+              _builder.append(_firstUpper, "");
+              _builder.append("Enabled(false);");
+              _builder.newLineIfNotEmpty();
+              {
+                if (hasImages) {
+                  {
+                    EList<StatemachineControlButtonAttribute> _buttons = control.getButtons();
+                    for(final StatemachineControlButtonAttribute button : _buttons) {
+                      {
+                        boolean _isHasImage = button.isHasImage();
+                        if (_isHasImage) {
+                          _builder.append("set");
+                          String _name_1 = button.getName();
+                          String _firstUpper_1 = StringExtensions.toFirstUpper(_name_1);
+                          _builder.append(_firstUpper_1, "");
+                          _builder.append("Caption(null);");
+                          _builder.newLineIfNotEmpty();
+                        }
+                      }
+                    }
+                  }
+                  _builder.append("if(statemachine != null) {");
+                  _builder.newLine();
+                  {
+                    EList<StatemachineControlButtonAttribute> _buttons_1 = control.getButtons();
+                    for(final StatemachineControlButtonAttribute button_1 : _buttons_1) {
+                      {
+                        boolean _and = false;
+                        boolean _isHasImage_1 = button_1.isHasImage();
+                        if (!_isHasImage_1) {
+                          _and = false;
+                        } else {
+                          String _image = button_1.getImage();
+                          int _length = _image.length();
+                          boolean _greaterThan = (_length > 0);
+                          _and = _greaterThan;
+                        }
+                        if (_and) {
+                          _builder.append("\tset");
+                          String _name_2 = button_1.getName();
+                          String _firstUpper_2 = StringExtensions.toFirstUpper(_name_2);
+                          _builder.append(_firstUpper_2, "");
+                          _builder.append("Image(statemachine.getThemeResourceService().getThemeResource(\"");
+                          String _image_1 = button_1.getImage();
+                          _builder.append(_image_1, "");
+                          _builder.append("\", ThemeResourceType.ICON));");
+                          _builder.newLineIfNotEmpty();
+                        }
+                      }
+                    }
+                  }
+                  _builder.append("}");
+                  _builder.newLine();
+                }
+              }
+              it.append(_builder);
+            }
+          };
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation init = this._jvmTypesBuilder.toMethod(control, "init", _typeRef_3, _function_3);
+      EList<JvmMember> _members_3 = controlCls.getMembers();
+      _xblockexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, init);
+    }
+    return _xblockexpression;
+  }
+  
+  public boolean generateFields(final JvmGenericType controlCls, final StatemachineControlField control) {
+    boolean _xblockexpression = false;
+    {
+      EList<StatemachineControlFieldAttribute> _fields = control.getFields();
+      final Consumer<StatemachineControlFieldAttribute> _function = new Consumer<StatemachineControlFieldAttribute>() {
+        public void accept(final StatemachineControlFieldAttribute it) {
+          String _name = it.getName();
+          Class<?> _decodeType = StatemachineDSLJvmModelInferrer.this.decodeType(it);
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_decodeType);
+          JvmField field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _name, _typeRef);
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+          StatemachineFieldType _attributeType = it.getAttributeType();
+          StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+          boolean _equals = Objects.equal(_attributeType_1, StatemachineInternalType.SUGGESTTEXT);
+          if (_equals) {
+            String _name_1 = it.getName();
+            String _plus = (_name_1 + "Event");
+            JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(YSuggestTextFieldEvents.class);
+            JvmField _field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus, _typeRef_1);
+            field = _field;
+            field.setVisibility(JvmVisibility.PRIVATE);
+            EList<JvmMember> _members_1 = controlCls.getMembers();
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+          }
+          String _name_2 = it.getName();
+          String _plus_1 = (_name_2 + "Enabled");
+          JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmField _field_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus_1, _typeRef_2);
+          field = _field_1;
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members_2 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+        }
+      };
+      _fields.forEach(_function);
+      EList<StatemachineControlFieldLayout> _layouts = control.getLayouts();
+      final Consumer<StatemachineControlFieldLayout> _function_1 = new Consumer<StatemachineControlFieldLayout>() {
+        public void accept(final StatemachineControlFieldLayout it) {
+          String _name = it.getName();
+          String _plus = (_name + "Enabled");
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmField layout = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _plus, _typeRef);
+          layout.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members, layout);
+        }
+      };
+      _layouts.forEach(_function_1);
+      EList<StatemachineControlFieldAttribute> _fields_1 = control.getFields();
+      final Consumer<StatemachineControlFieldAttribute> _function_2 = new Consumer<StatemachineControlFieldAttribute>() {
+        public void accept(final StatemachineControlFieldAttribute it) {
+          String _name = it.getName();
+          Class<?> _decodeType = StatemachineDSLJvmModelInferrer.this.decodeType(it);
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_decodeType);
+          JvmOperation operation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _name, _typeRef);
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+          final StatemachineControlFieldAttribute field = it;
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("set");
+          String _name_1 = it.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+          _builder.append(_firstUpper, "");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = field.getName();
+              Class<?> _decodeType = StatemachineDSLJvmModelInferrer.this.decodeType(field);
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_decodeType);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  String _decodeSetter = StatemachineDSLJvmModelInferrer.this.decodeSetter(field);
+                  _builder.append(_decodeSetter, "");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef_1, _function);
+          operation = _method;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+          String _name_2 = it.getName();
+          String _plus = (_name_2 + "Enabled");
+          JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmOperation _getter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus, _typeRef_2);
+          operation = _getter;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_2 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("set");
+          String _name_3 = it.getName();
+          String _firstUpper_1 = StringExtensions.toFirstUpper(_name_3);
+          _builder_1.append(_firstUpper_1, "");
+          _builder_1.append("Enabled");
+          JvmTypeReference _typeRef_3 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = field.getName();
+              String _plus = (_name + "Enabled");
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = field.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Enabled\", this.");
+                  String _name_1 = field.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Enabled, this.");
+                  String _name_2 = field.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Enabled = ");
+                  String _name_3 = field.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Enabled);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_1.toString(), _typeRef_3, _function_1);
+          operation = _method_1;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_3 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
+          StatemachineFieldType _attributeType = it.getAttributeType();
+          StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+          boolean _equals = Objects.equal(_attributeType_1, StatemachineInternalType.SUGGESTTEXT);
+          if (_equals) {
+            String _name_4 = it.getName();
+            String _plus_1 = (_name_4 + "Event");
+            JvmTypeReference _typeRef_4 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(YSuggestTextFieldEvents.class);
+            JvmOperation _getter_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus_1, _typeRef_4);
+            operation = _getter_1;
+            operation.setVisibility(JvmVisibility.PUBLIC);
+            EList<JvmMember> _members_4 = controlCls.getMembers();
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
+            final StatemachineControlFieldAttribute eventfield = it;
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("set");
+            String _name_5 = it.getName();
+            String _firstUpper_2 = StringExtensions.toFirstUpper(_name_5);
+            _builder_2.append(_firstUpper_2, "");
+            _builder_2.append("Event");
+            JvmTypeReference _typeRef_5 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+            final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+              public void apply(final JvmOperation it) {
+                EList<JvmFormalParameter> _parameters = it.getParameters();
+                String _name = eventfield.getName();
+                String _plus = (_name + "Event");
+                JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(YSuggestTextFieldEvents.class);
+                JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+                it.setVisibility(JvmVisibility.PUBLIC);
+                final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                  public void apply(final ITreeAppendable it) {
+                    StringConcatenation _builder = new StringConcatenation();
+                    _builder.append("pcs.firePropertyChange(\"");
+                    String _name = field.getName();
+                    _builder.append(_name, "");
+                    _builder.append("Event\", this.");
+                    String _name_1 = field.getName();
+                    _builder.append(_name_1, "");
+                    _builder.append("Event, this.");
+                    String _name_2 = field.getName();
+                    _builder.append(_name_2, "");
+                    _builder.append("Event = ");
+                    String _name_3 = field.getName();
+                    _builder.append(_name_3, "");
+                    _builder.append("Event);");
+                    it.append(_builder);
+                  }
+                };
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+              }
+            };
+            JvmOperation _method_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_2.toString(), _typeRef_5, _function_2);
+            operation = _method_2;
+            operation.setVisibility(JvmVisibility.PUBLIC);
+            EList<JvmMember> _members_5 = controlCls.getMembers();
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, operation);
+          }
+        }
+      };
+      _fields_1.forEach(_function_2);
+      EList<StatemachineControlFieldLayout> _layouts_1 = control.getLayouts();
+      final Consumer<StatemachineControlFieldLayout> _function_3 = new Consumer<StatemachineControlFieldLayout>() {
+        public void accept(final StatemachineControlFieldLayout it) {
+          String _name = it.getName();
+          String _plus = (_name + "Enabled");
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+          JvmOperation operation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toGetter(control, _plus, _typeRef);
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+          final StatemachineControlFieldLayout layout = it;
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("set");
+          String _name_1 = it.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+          _builder.append(_firstUpper, "");
+          _builder.append("Enabled");
+          JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = layout.getName();
+              String _plus = (_name + "Enabled");
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Boolean.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _plus, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = layout.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Enabled\", this.");
+                  String _name_1 = layout.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Enabled, this.");
+                  String _name_2 = layout.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Enabled = ");
+                  String _name_3 = layout.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Enabled);");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef_1, _function);
+          operation = _method;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_1 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+        }
+      };
+      _layouts_1.forEach(_function_3);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+          it.setVisibility(JvmVisibility.PUBLIC);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("super.init();");
+              _builder.newLine();
+              {
+                EList<StatemachineControlFieldAttribute> _fields = control.getFields();
+                for(final StatemachineControlFieldAttribute field : _fields) {
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name = field.getName();
+                  _builder.append(_name, "");
+                  _builder.append("Enabled\", this.");
+                  String _name_1 = field.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("Enabled, this.");
+                  String _name_2 = field.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append("Enabled = false);");
+                  _builder.newLineIfNotEmpty();
+                }
+              }
+              {
+                EList<StatemachineControlFieldLayout> _layouts = control.getLayouts();
+                for(final StatemachineControlFieldLayout layout : _layouts) {
+                  _builder.append("pcs.firePropertyChange(\"");
+                  String _name_3 = layout.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append("Enabled\", this.");
+                  String _name_4 = layout.getName();
+                  _builder.append(_name_4, "");
+                  _builder.append("Enabled, this.");
+                  String _name_5 = layout.getName();
+                  _builder.append(_name_5, "");
+                  _builder.append("Enabled = false);");
+                  _builder.newLineIfNotEmpty();
+                }
+              }
+              it.append(_builder);
+            }
+          };
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation init = this._jvmTypesBuilder.toMethod(control, "init", _typeRef, _function_4);
+      EList<JvmMember> _members = controlCls.getMembers();
+      _xblockexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members, init);
+    }
+    return _xblockexpression;
+  }
+  
+  public boolean generateDTOs(final JvmGenericType controlCls, final StatemachineControlDTO control) {
+    boolean _xblockexpression = false;
+    {
+      EList<StatemachineControlDTOAttribute> _dtos = control.getDtos();
+      final Consumer<StatemachineControlDTOAttribute> _function = new Consumer<StatemachineControlDTOAttribute>() {
+        public void accept(final StatemachineControlDTOAttribute it) {
+          String _name = it.getName();
+          StatemachineDTOType _attributeType = it.getAttributeType();
+          LDto _attributeType_1 = _attributeType.getAttributeType();
+          QualifiedName _fullyQualifiedName = StatemachineDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(_attributeType_1);
+          String _string = _fullyQualifiedName.toString();
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_string);
+          JvmField field = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toField(control, _name, _typeRef);
+          field.setVisibility(JvmVisibility.PRIVATE);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+        }
+      };
+      _dtos.forEach(_function);
+      EList<StatemachineControlDTOAttribute> _dtos_1 = control.getDtos();
+      final Consumer<StatemachineControlDTOAttribute> _function_1 = new Consumer<StatemachineControlDTOAttribute>() {
+        public void accept(final StatemachineControlDTOAttribute it) {
+          final StatemachineControlDTOAttribute dto = it;
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("get");
+          StatemachineDTOType _attributeType = it.getAttributeType();
+          LDto _attributeType_1 = _attributeType.getAttributeType();
+          String _name = _attributeType_1.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name);
+          _builder.append(_firstUpper, "");
+          JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+          final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("return ");
+                  String _name = dto.getName();
+                  _builder.append(_name, "");
+                  _builder.append(";");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation operation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder.toString(), _typeRef, _function);
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+          StatemachineDTOType _attributeType_2 = it.getAttributeType();
+          LDto _attributeType_3 = _attributeType_2.getAttributeType();
+          LDtoAbstractAttribute _primaryKeyAttribute = _attributeType_3.getPrimaryKeyAttribute();
+          boolean _notEquals = (!Objects.equal(_primaryKeyAttribute, null));
+          if (_notEquals) {
+            StringConcatenation _builder_1 = new StringConcatenation();
+            _builder_1.append("get");
+            StatemachineDTOType _attributeType_4 = it.getAttributeType();
+            LDto _attributeType_5 = _attributeType_4.getAttributeType();
+            String _name_1 = _attributeType_5.getName();
+            String _firstUpper_1 = StringExtensions.toFirstUpper(_name_1);
+            _builder_1.append(_firstUpper_1, "");
+            StatemachineDTOType _attributeType_6 = it.getAttributeType();
+            LDto _attributeType_7 = _attributeType_6.getAttributeType();
+            String _idAttributeName = _attributeType_7.getIdAttributeName();
+            String _firstUpper_2 = StringExtensions.toFirstUpper(_idAttributeName);
+            _builder_1.append(_firstUpper_2, "");
+            StatemachineDTOType _attributeType_8 = it.getAttributeType();
+            LDto _attributeType_9 = _attributeType_8.getAttributeType();
+            LScalarType _idAttributeType = _attributeType_9.getIdAttributeType();
+            String _name_2 = _idAttributeType.getName();
+            JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_name_2);
+            final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+              public void apply(final JvmOperation it) {
+                it.setVisibility(JvmVisibility.PUBLIC);
+                final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                  public void apply(final ITreeAppendable it) {
+                    StringConcatenation _builder = new StringConcatenation();
+                    _builder.append("return ");
+                    String _name = dto.getName();
+                    _builder.append(_name, "");
+                    _builder.append(".get");
+                    StatemachineDTOType _attributeType = dto.getAttributeType();
+                    LDto _attributeType_1 = _attributeType.getAttributeType();
+                    String _idAttributeName = _attributeType_1.getIdAttributeName();
+                    String _firstUpper = StringExtensions.toFirstUpper(_idAttributeName);
+                    _builder.append(_firstUpper, "");
+                    _builder.append("();");
+                    it.append(_builder);
+                  }
+                };
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+              }
+            };
+            JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_1.toString(), _typeRef_1, _function_1);
+            operation = _method;
+            operation.setVisibility(JvmVisibility.PUBLIC);
+            EList<JvmMember> _members_1 = controlCls.getMembers();
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+          }
+          StatemachineDTOType _attributeType_10 = it.getAttributeType();
+          LDto _attributeType_11 = _attributeType_10.getAttributeType();
+          EList<LDtoFeature> _features = _attributeType_11.getFeatures();
+          for (final LDtoFeature f : _features) {
+            {
+              if ((f instanceof LDtoInheritedAttribute)) {
+                LAttribute _inheritedFeature = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                LScalarType _type = _inheritedFeature.getType();
+                String typeName = _type.getName();
+                LAttribute _inheritedFeature_1 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                LScalarType _type_1 = _inheritedFeature_1.getType();
+                boolean _matched = false;
+                if (!_matched) {
+                  if (_type_1 instanceof LDataType) {
+                    _matched=true;
+                    LAttribute _inheritedFeature_2 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                    LScalarType _type_2 = _inheritedFeature_2.getType();
+                    JvmTypeReference _jvmTypeReference = ((LDataType) _type_2).getJvmTypeReference();
+                    boolean _notEquals_1 = (!Objects.equal(_jvmTypeReference, null));
+                    if (_notEquals_1) {
+                      LAttribute _inheritedFeature_3 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                      LScalarType _type_3 = _inheritedFeature_3.getType();
+                      JvmTypeReference _jvmTypeReference_1 = ((LDataType) _type_3).getJvmTypeReference();
+                      String _simpleName = _jvmTypeReference_1.getSimpleName();
+                      typeName = _simpleName;
+                    }
+                  }
+                }
+                if (!_matched) {
+                  if (_type_1 instanceof LEnum) {
+                    _matched=true;
+                    EObject _eContainer = ((LDtoInheritedAttribute)f).eContainer();
+                    QualifiedName _fullyQualifiedName = StatemachineDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(_eContainer);
+                    String _string = _fullyQualifiedName.toString();
+                    EObject _eContainer_1 = ((LDtoInheritedAttribute)f).eContainer();
+                    QualifiedName _fullyQualifiedName_1 = StatemachineDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(_eContainer_1);
+                    String _lastSegment = _fullyQualifiedName_1.getLastSegment();
+                    String _string_1 = _lastSegment.toString();
+                    LAttribute _inheritedFeature_2 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                    LScalarType _type_2 = _inheritedFeature_2.getType();
+                    String _name_3 = ((LEnum) _type_2).getName();
+                    String _replace = _string.replace(_string_1, _name_3);
+                    typeName = _replace;
+                  }
+                }
+                boolean isTimestamp = false;
+                boolean _equals = typeName.equals("Timestamp");
+                if (_equals) {
+                  isTimestamp = true;
+                  typeName = "org.joda.time.DateTime";
+                }
+                final String _typeName = typeName;
+                final boolean _isTimestamp = isTimestamp;
+                StringConcatenation _builder_2 = new StringConcatenation();
+                _builder_2.append("get");
+                StatemachineDTOType _attributeType_12 = it.getAttributeType();
+                LDto _attributeType_13 = _attributeType_12.getAttributeType();
+                String _name_3 = _attributeType_13.getName();
+                String _firstUpper_3 = StringExtensions.toFirstUpper(_name_3);
+                _builder_2.append(_firstUpper_3, "");
+                LAttribute _inheritedFeature_2 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                String _name_4 = _inheritedFeature_2.getName();
+                String _firstUpper_4 = StringExtensions.toFirstUpper(_name_4);
+                _builder_2.append(_firstUpper_4, "");
+                JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(typeName);
+                final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+                  public void apply(final JvmOperation it) {
+                    it.setVisibility(JvmVisibility.PUBLIC);
+                    final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                      public void apply(final ITreeAppendable it) {
+                        StringConcatenation _builder = new StringConcatenation();
+                        _builder.append("if(");
+                        String _name = dto.getName();
+                        _builder.append(_name, "");
+                        _builder.append("!=null) {");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("\t");
+                        _builder.append("return ");
+                        {
+                          if (_isTimestamp) {
+                            _builder.append("new DateTime(");
+                          }
+                        }
+                        String _name_1 = dto.getName();
+                        _builder.append(_name_1, "\t");
+                        _builder.append(".get");
+                        LAttribute _inheritedFeature = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                        String _name_2 = _inheritedFeature.getName();
+                        String _firstUpper = StringExtensions.toFirstUpper(_name_2);
+                        _builder.append(_firstUpper, "\t");
+                        _builder.append("()");
+                        {
+                          if (_isTimestamp) {
+                            _builder.append(")");
+                          }
+                        }
+                        _builder.append(";");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("} else {");
+                        _builder.newLine();
+                        _builder.append("\t");
+                        _builder.append("return null;");
+                        _builder.newLine();
+                        _builder.append("}");
+                        it.append(_builder);
+                      }
+                    };
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+                  }
+                };
+                JvmOperation _method_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_2.toString(), _typeRef_2, _function_2);
+                operation = _method_1;
+                EList<JvmMember> _members_2 = controlCls.getMembers();
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
+                StringConcatenation _builder_3 = new StringConcatenation();
+                _builder_3.append("set");
+                StatemachineDTOType _attributeType_14 = it.getAttributeType();
+                LDto _attributeType_15 = _attributeType_14.getAttributeType();
+                String _name_5 = _attributeType_15.getName();
+                String _firstUpper_5 = StringExtensions.toFirstUpper(_name_5);
+                _builder_3.append(_firstUpper_5, "");
+                LAttribute _inheritedFeature_3 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                String _name_6 = _inheritedFeature_3.getName();
+                String _firstUpper_6 = StringExtensions.toFirstUpper(_name_6);
+                _builder_3.append(_firstUpper_6, "");
+                JvmTypeReference _typeRef_3 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+                final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+                  public void apply(final JvmOperation it) {
+                    it.setVisibility(JvmVisibility.PUBLIC);
+                    EList<JvmFormalParameter> _parameters = it.getParameters();
+                    LAttribute _inheritedFeature = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                    String _name = _inheritedFeature.getName();
+                    JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(_typeName);
+                    JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+                    StatemachineDSLJvmModelInferrer.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 _name = dto.getName();
+                        _builder.append(_name, "");
+                        _builder.append(".set");
+                        LAttribute _inheritedFeature = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                        String _name_1 = _inheritedFeature.getName();
+                        String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+                        _builder.append(_firstUpper, "");
+                        _builder.append("(");
+                        LAttribute _inheritedFeature_1 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+                        String _name_2 = _inheritedFeature_1.getName();
+                        _builder.append(_name_2, "");
+                        {
+                          if (_isTimestamp) {
+                            _builder.append(".toDate()");
+                          }
+                        }
+                        _builder.append(");");
+                        it.append(_builder);
+                      }
+                    };
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+                  }
+                };
+                JvmOperation _method_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_3.toString(), _typeRef_3, _function_3);
+                operation = _method_2;
+                EList<JvmMember> _members_3 = controlCls.getMembers();
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
+              }
+              if ((f instanceof LDtoInheritedReference)) {
+                LReference _inheritedFeature_4 = ((LDtoInheritedReference)f).getInheritedFeature();
+                boolean _isToMany = StatemachineDSLJvmModelInferrer.this._modelExtensions.isToMany(_inheritedFeature_4);
+                if (_isToMany) {
+                  EList<StatemachineControlDTOAttribute> _dtos = control.getDtos();
+                  LReference _inheritedFeature_5 = ((LDtoInheritedReference)f).getInheritedFeature();
+                  LType _type_2 = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_5);
+                  String _name_7 = ((LEntity) _type_2).getName();
+                  boolean _containsType = StatemachineDSLJvmModelInferrer.this.containsType(_dtos, _name_7);
+                  if (_containsType) {
+                    LReference _inheritedFeature_6 = ((LDtoInheritedReference)f).getInheritedFeature();
+                    LType _type_3 = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_6);
+                    String _name_8 = _type_3.getName();
+                    final String typeName_1 = (_name_8 + "Dto");
+                    EList<JvmMember> _members_4 = controlCls.getMembers();
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
+                    StringConcatenation _builder_4 = new StringConcatenation();
+                    _builder_4.append("addTo");
+                    StatemachineDTOType _attributeType_16 = it.getAttributeType();
+                    LDto _attributeType_17 = _attributeType_16.getAttributeType();
+                    String _name_9 = _attributeType_17.getName();
+                    String _firstUpper_7 = StringExtensions.toFirstUpper(_name_9);
+                    _builder_4.append(_firstUpper_7, "");
+                    LReference _inheritedFeature_7 = ((LDtoInheritedReference)f).getInheritedFeature();
+                    String _name_10 = _inheritedFeature_7.getName();
+                    String _firstUpper_8 = StringExtensions.toFirstUpper(_name_10);
+                    _builder_4.append(_firstUpper_8, "");
+                    JvmTypeReference _typeRef_4 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+                    final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+                      public void apply(final JvmOperation it) {
+                        it.setVisibility(JvmVisibility.PUBLIC);
+                        EList<JvmFormalParameter> _parameters = it.getParameters();
+                        LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                        String _name = _inheritedFeature.getName();
+                        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+                        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+                        StatemachineDSLJvmModelInferrer.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 _name = dto.getName();
+                            _builder.append(_name, "");
+                            _builder.append(".addTo");
+                            LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_1 = _inheritedFeature.getName();
+                            String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+                            _builder.append(_firstUpper, "");
+                            _builder.append("((");
+                            LReference _inheritedFeature_1 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            LType _type = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_1);
+                            String _name_2 = _type.getName();
+                            String _string = _name_2.toString();
+                            _builder.append(_string, "");
+                            _builder.append("Dto)");
+                            LReference _inheritedFeature_2 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_3 = _inheritedFeature_2.getName();
+                            _builder.append(_name_3, "");
+                            _builder.append(");");
+                            it.append(_builder);
+                          }
+                        };
+                        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+                      }
+                    };
+                    JvmOperation _method_3 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_4.toString(), _typeRef_4, _function_4);
+                    operation = _method_3;
+                    EList<JvmMember> _members_5 = controlCls.getMembers();
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, operation);
+                    StringConcatenation _builder_5 = new StringConcatenation();
+                    _builder_5.append("removeFrom");
+                    StatemachineDTOType _attributeType_18 = it.getAttributeType();
+                    LDto _attributeType_19 = _attributeType_18.getAttributeType();
+                    String _name_11 = _attributeType_19.getName();
+                    String _firstUpper_9 = StringExtensions.toFirstUpper(_name_11);
+                    _builder_5.append(_firstUpper_9, "");
+                    LReference _inheritedFeature_8 = ((LDtoInheritedReference)f).getInheritedFeature();
+                    String _name_12 = _inheritedFeature_8.getName();
+                    String _firstUpper_10 = StringExtensions.toFirstUpper(_name_12);
+                    _builder_5.append(_firstUpper_10, "");
+                    JvmTypeReference _typeRef_5 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+                    final Procedure1<JvmOperation> _function_5 = new Procedure1<JvmOperation>() {
+                      public void apply(final JvmOperation it) {
+                        it.setVisibility(JvmVisibility.PUBLIC);
+                        EList<JvmFormalParameter> _parameters = it.getParameters();
+                        LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                        String _name = _inheritedFeature.getName();
+                        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+                        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+                        StatemachineDSLJvmModelInferrer.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 _name = dto.getName();
+                            _builder.append(_name, "");
+                            _builder.append(".removeFrom");
+                            LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_1 = _inheritedFeature.getName();
+                            String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+                            _builder.append(_firstUpper, "");
+                            _builder.append("((");
+                            LReference _inheritedFeature_1 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            LType _type = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_1);
+                            String _name_2 = _type.getName();
+                            String _string = _name_2.toString();
+                            _builder.append(_string, "");
+                            _builder.append("Dto)");
+                            LReference _inheritedFeature_2 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_3 = _inheritedFeature_2.getName();
+                            _builder.append(_name_3, "");
+                            _builder.append(");");
+                            it.append(_builder);
+                          }
+                        };
+                        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+                      }
+                    };
+                    JvmOperation _method_4 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_5.toString(), _typeRef_5, _function_5);
+                    operation = _method_4;
+                    EList<JvmMember> _members_6 = controlCls.getMembers();
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, operation);
+                  }
+                } else {
+                  EList<StatemachineControlDTOAttribute> _dtos_1 = control.getDtos();
+                  LReference _inheritedFeature_9 = ((LDtoInheritedReference)f).getInheritedFeature();
+                  LType _type_4 = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_9);
+                  String _name_13 = ((LEntity) _type_4).getName();
+                  boolean _containsType_1 = StatemachineDSLJvmModelInferrer.this.containsType(_dtos_1, _name_13);
+                  if (_containsType_1) {
+                    LReference _inheritedFeature_10 = ((LDtoInheritedReference)f).getInheritedFeature();
+                    LType _type_5 = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_10);
+                    String _name_14 = _type_5.getName();
+                    final String typeName_2 = (_name_14 + "Dto");
+                    EList<JvmMember> _members_7 = controlCls.getMembers();
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, operation);
+                    StringConcatenation _builder_6 = new StringConcatenation();
+                    _builder_6.append("set");
+                    StatemachineDTOType _attributeType_20 = it.getAttributeType();
+                    LDto _attributeType_21 = _attributeType_20.getAttributeType();
+                    String _name_15 = _attributeType_21.getName();
+                    String _firstUpper_11 = StringExtensions.toFirstUpper(_name_15);
+                    _builder_6.append(_firstUpper_11, "");
+                    LReference _inheritedFeature_11 = ((LDtoInheritedReference)f).getInheritedFeature();
+                    String _name_16 = _inheritedFeature_11.getName();
+                    String _firstUpper_12 = StringExtensions.toFirstUpper(_name_16);
+                    _builder_6.append(_firstUpper_12, "");
+                    JvmTypeReference _typeRef_6 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+                    final Procedure1<JvmOperation> _function_6 = new Procedure1<JvmOperation>() {
+                      public void apply(final JvmOperation it) {
+                        it.setVisibility(JvmVisibility.PUBLIC);
+                        EList<JvmFormalParameter> _parameters = it.getParameters();
+                        LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                        String _name = _inheritedFeature.getName();
+                        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+                        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+                        StatemachineDSLJvmModelInferrer.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 _name = dto.getName();
+                            _builder.append(_name, "");
+                            _builder.append(".set");
+                            LReference _inheritedFeature = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_1 = _inheritedFeature.getName();
+                            String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+                            _builder.append(_firstUpper, "");
+                            _builder.append("((");
+                            LReference _inheritedFeature_1 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            LType _type = StatemachineDSLJvmModelInferrer.this._modelExtensions.type(_inheritedFeature_1);
+                            String _name_2 = _type.getName();
+                            String _string = _name_2.toString();
+                            _builder.append(_string, "");
+                            _builder.append("Dto)");
+                            LReference _inheritedFeature_2 = ((LDtoInheritedReference)f).getInheritedFeature();
+                            String _name_3 = _inheritedFeature_2.getName();
+                            _builder.append(_name_3, "");
+                            _builder.append(");");
+                            it.append(_builder);
+                          }
+                        };
+                        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+                      }
+                    };
+                    JvmOperation _method_5 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_6.toString(), _typeRef_6, _function_6);
+                    operation = _method_5;
+                    EList<JvmMember> _members_8 = controlCls.getMembers();
+                    StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, operation);
+                  }
+                }
+              }
+            }
+          }
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("set");
+          StatemachineDTOType _attributeType_12 = it.getAttributeType();
+          LDto _attributeType_13 = _attributeType_12.getAttributeType();
+          String _name_3 = _attributeType_13.getName();
+          String _firstUpper_3 = StringExtensions.toFirstUpper(_name_3);
+          _builder_2.append(_firstUpper_3, "");
+          JvmTypeReference _typeRef_2 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = dto.getName();
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              it.setVisibility(JvmVisibility.PUBLIC);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("pcs.firePropertyChange(\"");
+                  StatemachineDTOType _attributeType = dto.getAttributeType();
+                  LDto _attributeType_1 = _attributeType.getAttributeType();
+                  String _name = _attributeType_1.getName();
+                  String _firstLower = StringExtensions.toFirstLower(_name);
+                  _builder.append(_firstLower, "");
+                  _builder.append("\", this.");
+                  String _name_1 = dto.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append(", this.");
+                  String _name_2 = dto.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append(" = (");
+                  StatemachineDTOType _attributeType_2 = dto.getAttributeType();
+                  LDto _attributeType_3 = _attributeType_2.getAttributeType();
+                  String _name_3 = _attributeType_3.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append(")");
+                  String _name_4 = dto.getName();
+                  _builder.append(_name_4, "");
+                  _builder.append(");");
+                  {
+                    boolean _isHasEvent = dto.isHasEvent();
+                    if (_isHasEvent) {
+                      _builder.newLineIfNotEmpty();
+                      _builder.append("statemachine.processEvent(statemachine, new MessageEvent(MessageEvent.EventType.TRIGGER, \"");
+                      StatemachineEvent _event = dto.getEvent();
+                      String _name_5 = _event.getName();
+                      _builder.append(_name_5, "");
+                      _builder.append("\"));");
+                    }
+                  }
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_2.toString(), _typeRef_2, _function_2);
+          operation = _method_1;
+          operation.setVisibility(JvmVisibility.PUBLIC);
+          EList<JvmMember> _members_2 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("update");
+          StatemachineDTOType _attributeType_14 = it.getAttributeType();
+          LDto _attributeType_15 = _attributeType_14.getAttributeType();
+          String _name_4 = _attributeType_15.getName();
+          String _firstUpper_4 = StringExtensions.toFirstUpper(_name_4);
+          _builder_3.append(_firstUpper_4, "");
+          JvmTypeReference _typeRef_3 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              it.setVisibility(JvmVisibility.PUBLIC);
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = dto.getName();
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("((IDTOService<");
+                  StatemachineDTOType _attributeType = dto.getAttributeType();
+                  LDto _attributeType_1 = _attributeType.getAttributeType();
+                  String _name = _attributeType_1.getName();
+                  _builder.append(_name, "");
+                  _builder.append(">)dtoServices.get(\"");
+                  StatemachineDTOType _attributeType_2 = dto.getAttributeType();
+                  LDto _attributeType_3 = _attributeType_2.getAttributeType();
+                  String _name_1 = _attributeType_3.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("\")).update((");
+                  StatemachineDTOType _attributeType_4 = dto.getAttributeType();
+                  LDto _attributeType_5 = _attributeType_4.getAttributeType();
+                  String _name_2 = _attributeType_5.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append(")");
+                  String _name_3 = dto.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append(");");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_2 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_3.toString(), _typeRef_3, _function_3);
+          operation = _method_2;
+          EList<JvmMember> _members_3 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
+          StringConcatenation _builder_4 = new StringConcatenation();
+          _builder_4.append("delete");
+          StatemachineDTOType _attributeType_16 = it.getAttributeType();
+          LDto _attributeType_17 = _attributeType_16.getAttributeType();
+          String _name_5 = _attributeType_17.getName();
+          String _firstUpper_5 = StringExtensions.toFirstUpper(_name_5);
+          _builder_4.append(_firstUpper_5, "");
+          JvmTypeReference _typeRef_4 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Void.TYPE);
+          final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+            public void apply(final JvmOperation it) {
+              it.setVisibility(JvmVisibility.PUBLIC);
+              EList<JvmFormalParameter> _parameters = it.getParameters();
+              String _name = dto.getName();
+              JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+              JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(control, _name, _typeRef);
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                public void apply(final ITreeAppendable it) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append("((IDTOService<");
+                  StatemachineDTOType _attributeType = dto.getAttributeType();
+                  LDto _attributeType_1 = _attributeType.getAttributeType();
+                  String _name = _attributeType_1.getName();
+                  _builder.append(_name, "");
+                  _builder.append(">)dtoServices.get(\"");
+                  StatemachineDTOType _attributeType_2 = dto.getAttributeType();
+                  LDto _attributeType_3 = _attributeType_2.getAttributeType();
+                  String _name_1 = _attributeType_3.getName();
+                  _builder.append(_name_1, "");
+                  _builder.append("\")).delete((");
+                  StatemachineDTOType _attributeType_4 = dto.getAttributeType();
+                  LDto _attributeType_5 = _attributeType_4.getAttributeType();
+                  String _name_2 = _attributeType_5.getName();
+                  _builder.append(_name_2, "");
+                  _builder.append(")");
+                  String _name_3 = dto.getName();
+                  _builder.append(_name_3, "");
+                  _builder.append(");");
+                  it.append(_builder);
+                }
+              };
+              StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+            }
+          };
+          JvmOperation _method_3 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(control, _builder_4.toString(), _typeRef_4, _function_4);
+          operation = _method_3;
+          EList<JvmMember> _members_4 = controlCls.getMembers();
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
+        }
+      };
+      _dtos_1.forEach(_function_1);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+          it.setVisibility(JvmVisibility.PUBLIC);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("if (dtoServices.isEmpty()) {");
+              _builder.newLine();
+              {
+                EList<StatemachineControlDTOAttribute> _dtos = control.getDtos();
+                for(final StatemachineControlDTOAttribute dto : _dtos) {
+                  _builder.append("\t");
+                  _builder.append("initDatasource(\"");
+                  String _name = dto.getName();
+                  _builder.append(_name, "\t");
+                  _builder.append("\");");
+                  _builder.newLineIfNotEmpty();
+                }
+              }
+              _builder.append("}");
+              _builder.newLine();
+              it.append(_builder);
+            }
+          };
+          StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation init = this._jvmTypesBuilder.toMethod(control, "init", _typeRef, _function_2);
+      EList<JvmMember> _members = controlCls.getMembers();
+      _xblockexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members, init);
+    }
+    return _xblockexpression;
+  }
+  
+  public boolean containsType(final EList<StatemachineControlDTOAttribute> list, final String entityName) {
+    for (final StatemachineControlDTOAttribute attr : list) {
+      StatemachineDTOType _attributeType = attr.getAttributeType();
+      LDto _attributeType_1 = _attributeType.getAttributeType();
+      LType _wrappedType = _attributeType_1.getWrappedType();
+      String _name = null;
+      if (_wrappedType!=null) {
+        _name=_wrappedType.getName();
+      }
+      boolean _equals = entityName.equals(_name);
+      if (_equals) {
+        return true;
+      }
+    }
+    return false;
+  }
+  
+  public String decodeSetter(final StatemachineControlFieldAttribute field) {
+    StatemachineFieldType _attributeType = field.getAttributeType();
+    StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+    if (_attributeType_1 != null) {
+      switch (_attributeType_1) {
+        case BOOLEAN:
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("pcs.firePropertyChange(\"");
+          String _name = field.getName();
+          _builder.append(_name, "");
+          _builder.append("\", this.");
+          String _name_1 = field.getName();
+          _builder.append(_name_1, "");
+          _builder.append(", this.");
+          String _name_2 = field.getName();
+          _builder.append(_name_2, "");
+          _builder.append(" = ");
+          String _name_3 = field.getName();
+          _builder.append(_name_3, "");
+          _builder.append(");");
+          _builder.newLineIfNotEmpty();
+          return _builder.toString();
+        case INTEGER:
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("pcs.firePropertyChange(\"");
+          String _name_4 = field.getName();
+          _builder_1.append(_name_4, "");
+          _builder_1.append("\", this.");
+          String _name_5 = field.getName();
+          _builder_1.append(_name_5, "");
+          _builder_1.append(", this.");
+          String _name_6 = field.getName();
+          _builder_1.append(_name_6, "");
+          _builder_1.append(" = ");
+          String _name_7 = field.getName();
+          _builder_1.append(_name_7, "");
+          _builder_1.append(");");
+          _builder_1.newLineIfNotEmpty();
+          return _builder_1.toString();
+        case LONG:
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("pcs.firePropertyChange(\"");
+          String _name_8 = field.getName();
+          _builder_2.append(_name_8, "");
+          _builder_2.append("\", this.");
+          String _name_9 = field.getName();
+          _builder_2.append(_name_9, "");
+          _builder_2.append(", this.");
+          String _name_10 = field.getName();
+          _builder_2.append(_name_10, "");
+          _builder_2.append(" = ");
+          String _name_11 = field.getName();
+          _builder_2.append(_name_11, "");
+          _builder_2.append(");");
+          _builder_2.newLineIfNotEmpty();
+          return _builder_2.toString();
+        case DOUBLE:
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("pcs.firePropertyChange(\"");
+          String _name_12 = field.getName();
+          _builder_3.append(_name_12, "");
+          _builder_3.append("\", this.");
+          String _name_13 = field.getName();
+          _builder_3.append(_name_13, "");
+          _builder_3.append(", this.");
+          String _name_14 = field.getName();
+          _builder_3.append(_name_14, "");
+          _builder_3.append(" = ");
+          String _name_15 = field.getName();
+          _builder_3.append(_name_15, "");
+          _builder_3.append(");");
+          _builder_3.newLineIfNotEmpty();
+          return _builder_3.toString();
+        case STRING:
+          StringConcatenation _builder_4 = new StringConcatenation();
+          _builder_4.append("pcs.firePropertyChange(\"");
+          String _name_16 = field.getName();
+          _builder_4.append(_name_16, "");
+          _builder_4.append("\", this.");
+          String _name_17 = field.getName();
+          _builder_4.append(_name_17, "");
+          _builder_4.append(", this.");
+          String _name_18 = field.getName();
+          _builder_4.append(_name_18, "");
+          _builder_4.append(" = ");
+          String _name_19 = field.getName();
+          _builder_4.append(_name_19, "");
+          _builder_4.append(");");
+          _builder_4.newLineIfNotEmpty();
+          return _builder_4.toString();
+        case DATE:
+          StringConcatenation _builder_5 = new StringConcatenation();
+          _builder_5.append("pcs.firePropertyChange(\"");
+          String _name_20 = field.getName();
+          _builder_5.append(_name_20, "");
+          _builder_5.append("\", this.");
+          String _name_21 = field.getName();
+          _builder_5.append(_name_21, "");
+          _builder_5.append(", this.");
+          String _name_22 = field.getName();
+          _builder_5.append(_name_22, "");
+          _builder_5.append(" = ");
+          String _name_23 = field.getName();
+          _builder_5.append(_name_23, "");
+          _builder_5.append(");");
+          _builder_5.newLineIfNotEmpty();
+          return _builder_5.toString();
+        case SUGGESTTEXT:
+          StringConcatenation _builder_6 = new StringConcatenation();
+          _builder_6.append("pcs.firePropertyChange(\"");
+          String _name_24 = field.getName();
+          _builder_6.append(_name_24, "");
+          _builder_6.append("\", this.");
+          String _name_25 = field.getName();
+          _builder_6.append(_name_25, "");
+          _builder_6.append(", this.");
+          String _name_26 = field.getName();
+          _builder_6.append(_name_26, "");
+          _builder_6.append(" = ");
+          String _name_27 = field.getName();
+          _builder_6.append(_name_27, "");
+          _builder_6.append(");");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("set");
+          String _name_28 = field.getName();
+          String _firstUpper = StringExtensions.toFirstUpper(_name_28);
+          _builder_6.append(_firstUpper, "");
+          _builder_6.append("Event(null);");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("if(");
+          String _name_29 = field.getName();
+          _builder_6.append(_name_29, "");
+          _builder_6.append(" == null || ");
+          String _name_30 = field.getName();
+          _builder_6.append(_name_30, "");
+          _builder_6.append(".isEmpty()) {");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("\t");
+          _builder_6.append("set");
+          String _name_31 = field.getName();
+          String _firstUpper_1 = StringExtensions.toFirstUpper(_name_31);
+          _builder_6.append(_firstUpper_1, "\t");
+          _builder_6.append("Event(YSuggestTextFieldEvents.CLEAR);");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("} else {");
+          _builder_6.newLine();
+          _builder_6.append("\t");
+          _builder_6.append("set");
+          String _name_32 = field.getName();
+          String _firstUpper_2 = StringExtensions.toFirstUpper(_name_32);
+          _builder_6.append(_firstUpper_2, "\t");
+          _builder_6.append("Event(YSuggestTextFieldEvents.OPEN_POPUP);");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("}");
+          return _builder_6.toString();
+        default:
+          break;
+      }
+    }
+    return null;
+  }
+  
+  public Class<?> decodeType(final StatemachineControlFieldAttribute field) {
+    StatemachineFieldType _attributeType = field.getAttributeType();
+    StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+    if (_attributeType_1 != null) {
+      switch (_attributeType_1) {
+        case BOOLEAN:
+          return Boolean.class;
+        case INTEGER:
+          return Integer.class;
+        case LONG:
+          return Long.class;
+        case DOUBLE:
+          return Double.class;
+        case STRING:
+          return String.class;
+        case DATE:
+          return Date.class;
+        case SUGGESTTEXT:
+          return String.class;
+        default:
+          break;
+      }
+    }
+    return null;
+  }
+  
+  public void toConstructor(final JvmDeclaredType type, final Statemachine statemachine) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
+      public void apply(final JvmConstructor it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("super();");
+            _builder.newLine();
+            _builder.append("state = States.");
+            StatemachineState _initialState = statemachine.getInitialState();
+            String _name = _initialState.getName();
+            _builder.append(_name, "");
+            _builder.append(";");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(statemachine, _function);
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
+  }
+  
+  public void toFields(final JvmGenericType type, final Statemachine statemachine) {
+    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(\"statemachine\")");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(statemachine, "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("States");
+    JvmField _field_1 = this._jvmTypesBuilder.toField(statemachine, "state", _typeRef_1);
+    field = _field_1;
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+  }
+  
+  public void toOperations(final JvmGenericType type, final Statemachine statemachine) {
+    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<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("schedule(this, 100, new MessageEvent(EventType.TRIGGER, \"");
+            StatemachineEvent _initialEvent = statemachine.getInitialEvent();
+            String _name = _initialEvent.getName();
+            _builder.append(_name, "");
+            _builder.append("\"));");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(statemachine, "start", _typeRef, _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+    EList<JvmMember> _members_1 = type.getMembers();
+    final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
+      public void apply(final JvmGenericType it) {
+        EList<JvmMember> _members = it.getMembers();
+        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef("States");
+        final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IStateMachine.class);
+            JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(statemachine, "stateMachine", _typeRef);
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+            EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+            JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(MessageEvent.class);
+            JvmFormalParameter _parameter_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(statemachine, "event", _typeRef_1);
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          }
+        };
+        JvmOperation _method = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toMethod(statemachine, "process", _typeRef, _function);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+      }
+    };
+    JvmGenericType _interface = this._jvmTypesBuilder.toInterface(statemachine, "State", _function_1);
+    this._jvmTypesBuilder.<JvmGenericType>operator_add(_members_1, _interface);
+    EList<JvmMember> _members_2 = type.getMembers();
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IStateMachine.class);
+        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(statemachine, "stateMachine", _typeRef);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmTypeReference _typeRef_1 = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(MessageEvent.class);
+        JvmFormalParameter _parameter_1 = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(statemachine, "event", _typeRef_1);
+        StatemachineDSLJvmModelInferrer.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();
+            _builder.append("state = state.process(stateMachine, event);");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(statemachine, "processEvent", _typeRef_1, _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_1);
+    EList<JvmMember> _members_3 = type.getMembers();
+    final Procedure1<JvmEnumerationType> _function_3 = new Procedure1<JvmEnumerationType>() {
+      public void apply(final JvmEnumerationType it) {
+        EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef("State");
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+        EList<StatemachineState> _states = statemachine.getStates();
+        final Consumer<StatemachineState> _function = new Consumer<StatemachineState>() {
+          public void accept(final StatemachineState state) {
+            String _documentation = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(state);
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, _documentation);
+            EList<JvmMember> _members = it.getMembers();
+            String _name = state.getName();
+            final Procedure1<JvmEnumerationLiteral> _function = new Procedure1<JvmEnumerationLiteral>() {
+              public void apply(final JvmEnumerationLiteral it) {
+                final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+                  public void apply(final ITreeAppendable it) {
+                    StringConcatenation _builder = new StringConcatenation();
+                    _builder.append("@Override");
+                    _builder.newLine();
+                    _builder.append("public States process(final IStateMachine stateMachine, final MessageEvent event) {");
+                    _builder.newLine();
+                    _builder.append("\t");
+                    _builder.append("stateMachine.dispatchMessages(event);");
+                    _builder.newLine();
+                    _builder.append("\t");
+                    _builder.append("switch (event.getType()) {");
+                    _builder.newLine();
+                    {
+                      StatemachineControlFieldAttribute _keystroke = state.getKeystroke();
+                      boolean _notEquals = (!Objects.equal(_keystroke, null));
+                      if (_notEquals) {
+                        _builder.append("\t\tcase KEYBOARD:");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("\t\t\t");
+                        _builder.append("stateMachine.append(\"");
+                        StatemachineControlFieldAttribute _keystroke_1 = state.getKeystroke();
+                        String _name = _keystroke_1.getName();
+                        _builder.append(_name, "\t\t\t");
+                        _builder.append("\", event.getId());");
+                        {
+                          boolean _isHasKeyOperation = state.isHasKeyOperation();
+                          if (_isHasKeyOperation) {
+                            _builder.newLineIfNotEmpty();
+                            _builder.append("\t\t\t");
+                            StatemachineOperation _keyOperation = state.getKeyOperation();
+                            String _decodeOperation = StatemachineDSLJvmModelInferrer.this.decodeOperation(_keyOperation, 0);
+                            _builder.append(_decodeOperation, "\t\t\t");
+                            _builder.newLineIfNotEmpty();
+                          }
+                        }
+                        _builder.append("\t\t\t");
+                        _builder.append("break;");
+                        _builder.newLine();
+                      }
+                    }
+                    {
+                      StatemachineOperation _identity = state.getIdentity();
+                      boolean _notEquals_1 = (!Objects.equal(_identity, null));
+                      if (_notEquals_1) {
+                        _builder.append("\t\tcase ID:");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("\t\t\t");
+                        StatemachineOperation _identity_1 = state.getIdentity();
+                        String _decodeOperation_1 = StatemachineDSLJvmModelInferrer.this.decodeOperation(_identity_1, true, 0);
+                        _builder.append(_decodeOperation_1, "\t\t\t");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("\t\t\t");
+                        _builder.append("break;");
+                        _builder.newLine();
+                      }
+                    }
+                    {
+                      EList<StatemachineTrigger> _triggers = state.getTriggers();
+                      int _size = _triggers.size();
+                      boolean _greaterThan = (_size > 0);
+                      if (_greaterThan) {
+                        _builder.append("\t\tcase TRIGGER:");
+                        _builder.newLineIfNotEmpty();
+                        _builder.append("\t\t\t");
+                        CharSequence _createTriggerEvents = StatemachineDSLJvmModelInferrer.this.createTriggerEvents(state);
+                        _builder.append(_createTriggerEvents, "\t\t\t");
+                        _builder.newLineIfNotEmpty();
+                      }
+                    }
+                    _builder.append("\t\t");
+                    _builder.append("default:");
+                    _builder.newLine();
+                    _builder.append("\t\t\t");
+                    _builder.append("break;");
+                    _builder.newLine();
+                    _builder.append("\t");
+                    _builder.append("}");
+                    _builder.newLine();
+                    _builder.append("\t");
+                    _builder.append("return this;");
+                    _builder.newLine();
+                    _builder.append("}");
+                    it.append(_builder);
+                  }
+                };
+                StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+              }
+            };
+            JvmEnumerationLiteral _enumerationLiteral = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toEnumerationLiteral(state, _name, _function);
+            StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmEnumerationLiteral>operator_add(_members, _enumerationLiteral);
+          }
+        };
+        _states.forEach(_function);
+      }
+    };
+    JvmEnumerationType _enumerationType = this._jvmTypesBuilder.toEnumerationType(statemachine, "States", _function_3);
+    this._jvmTypesBuilder.<JvmEnumerationType>operator_add(_members_3, _enumerationType);
+  }
+  
+  public String className(final Statemachine statemachine) {
+    String _name = statemachine.getName();
+    String _string = _name.toString();
+    String clsName = StringExtensions.toFirstUpper(_string);
+    String _quote = Pattern.quote(".");
+    String[] parts = clsName.split(_quote);
+    int len = parts.length;
+    if ((len > 1)) {
+      String _get = parts[(len - 1)];
+      return StringExtensions.toFirstUpper(_get);
+    }
+    return clsName;
+  }
+  
+  public CharSequence createTriggerEvents(final StatemachineState state) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("switch (event.getId()) {");
+    _builder.newLine();
+    {
+      EList<StatemachineTrigger> _triggers = state.getTriggers();
+      for(final StatemachineTrigger trig : _triggers) {
+        {
+          EList<StatemachineEvent> _triggers_1 = trig.getTriggers();
+          for(final StatemachineEvent t : _triggers_1) {
+            _builder.append("\tcase \"");
+            String _name = t.getName();
+            _builder.append(_name, "");
+            _builder.append("\":");
+            _builder.newLineIfNotEmpty();
+          }
+        }
+        String _doGuards = this.doGuards(trig, 2);
+        _builder.append(_doGuards, "");
+        _builder.newLineIfNotEmpty();
+      }
+    }
+    String _identation = this.identation(1);
+    _builder.append(_identation, "");
+    _builder.append("}");
+    _builder.newLineIfNotEmpty();
+    String _identation_1 = this.identation(1);
+    _builder.append(_identation_1, "");
+    _builder.append("break;");
+    _builder.newLineIfNotEmpty();
+    return _builder;
+  }
+  
+  public String doGuards(final StatemachineTrigger trigger, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    EList<StatemachineGuard> _guards = trigger.getGuards();
+    Iterator<StatemachineGuard> _iterator = _guards.iterator();
+    String _recurseGuards = this.recurseGuards(trigger, _iterator, level);
+    _builder.append(_recurseGuards, "");
+    {
+      boolean _or = false;
+      boolean _and = false;
+      EList<StatemachineGuard> _guards_1 = trigger.getGuards();
+      int _size = _guards_1.size();
+      boolean _equals = (_size == 0);
+      if (!_equals) {
+        _and = false;
+      } else {
+        boolean _isHasTransition = trigger.isHasTransition();
+        boolean _not = (!_isHasTransition);
+        _and = _not;
+      }
+      if (_and) {
+        _or = true;
+      } else {
+        EList<StatemachineGuard> _guards_2 = trigger.getGuards();
+        int _size_1 = _guards_2.size();
+        boolean _greaterThan = (_size_1 > 0);
+        _or = _greaterThan;
+      }
+      if (_or) {
+        _builder.newLineIfNotEmpty();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("break;");
+      }
+    }
+    return _builder.toString();
+  }
+  
+  public String recurseGuards(final StatemachineTrigger trigger, final Iterator<StatemachineGuard> guards, final int level) {
+    String body = "";
+    boolean _hasNext = guards.hasNext();
+    if (_hasNext) {
+      StatemachineGuard guard = guards.next();
+      StringConcatenation _builder = new StringConcatenation();
+      CharSequence _decodeGuard = this.decodeGuard(guard, level);
+      _builder.append(_decodeGuard, "");
+      _builder.newLineIfNotEmpty();
+      String _recurseGuards = this.recurseGuards(trigger, guards, (level + 1));
+      _builder.append(_recurseGuards, "");
+      _builder.newLineIfNotEmpty();
+      String _identation = this.identation(level);
+      _builder.append(_identation, "");
+      _builder.append("}");
+      _builder.newLineIfNotEmpty();
+      CharSequence _decodeGuardOnFail = this.decodeGuardOnFail(guard, level);
+      _builder.append(_decodeGuardOnFail, "");
+      _builder.newLineIfNotEmpty();
+      body = _builder.toString();
+    } else {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      CharSequence _generateActions = this.generateActions(trigger, level);
+      _builder_1.append(_generateActions, "");
+      _builder_1.newLineIfNotEmpty();
+      {
+        boolean _isHasTransition = trigger.isHasTransition();
+        if (_isHasTransition) {
+          String _identation_1 = this.identation(level);
+          _builder_1.append(_identation_1, "");
+          _builder_1.append("return ");
+          StatemachineState _transition = trigger.getTransition();
+          String _name = _transition.getName();
+          _builder_1.append(_name, "");
+          _builder_1.append(";");
+          _builder_1.newLineIfNotEmpty();
+        }
+      }
+      body = _builder_1.toString();
+    }
+    return body;
+  }
+  
+  public String identation(final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    String body = _builder.toString();
+    for (int i = 0; (i < level); i++) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      _builder_1.append("\t");
+      body = _builder_1.toString();
+    }
+    return body;
+  }
+  
+  public CharSequence decodeGuard(final StatemachineGuard guard, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _identation = this.identation(level);
+    _builder.append(_identation, "");
+    _builder.append("if((boolean)");
+    FunctionLibraryGuard _guard = guard.getGuard();
+    String _name = _guard.getName();
+    String _call = this.call(((EObject) guard), _name, StatemachineEnums.Functions.GUARD, null, null, false);
+    _builder.append(_call, "");
+    _builder.append(") {");
+    return _builder;
+  }
+  
+  public CharSequence decodeGuardOnFail(final StatemachineGuard guard, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    {
+      boolean _isHasOnFail = guard.isHasOnFail();
+      if (_isHasOnFail) {
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("else {");
+        _builder.newLineIfNotEmpty();
+        _builder.append("\t");
+        String _identation_1 = this.identation(level);
+        _builder.append(_identation_1, "\t");
+        _builder.append("Notification.show(stateMachine.getTranslation(\"");
+        String _onFailCaption = guard.getOnFailCaption();
+        _builder.append(_onFailCaption, "\t");
+        _builder.append("\"), stateMachine.getTranslation(\"");
+        String _onFailDescription = guard.getOnFailDescription();
+        _builder.append(_onFailDescription, "\t");
+        _builder.append("\"), Type.");
+        StatemachineUserMessageType _onFailType = guard.getOnFailType();
+        String _name = _onFailType.getName();
+        _builder.append(_name, "\t");
+        _builder.append(");");
+        _builder.newLineIfNotEmpty();
+        String _identation_2 = this.identation(level);
+        _builder.append(_identation_2, "");
+        _builder.append("}");
+      }
+    }
+    return _builder;
+  }
+  
+  public CharSequence generateActions(final StatemachineTrigger trigger, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    {
+      EList<StatemachineAction> _actions = trigger.getActions();
+      for(final StatemachineAction action : _actions) {
+        String _switchAction = this.switchAction(action, level);
+        _builder.append(_switchAction, "");
+        _builder.newLineIfNotEmpty();
+      }
+    }
+    return _builder;
+  }
+  
+  public String switchAction(final StatemachineAction action, final int level) {
+    boolean _matched = false;
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralBlinkRate) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"blinkRate\", ");
+        int _blinkRate = ((StatemachineActionPeripheralBlinkRate)action).getBlinkRate();
+        _builder.append(_blinkRate, "");
+        _builder.append(");");
+        _builder.newLineIfNotEmpty();
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralClear) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"clearDisplay\", \"\");");
+        _builder.newLineIfNotEmpty();
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralCreateWindow) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"createWindow\", \"");
+        int _viewportRow = ((StatemachineActionPeripheralCreateWindow)action).getViewportRow();
+        _builder.append(_viewportRow, "");
+        _builder.append("|");
+        int _viewportColumn = ((StatemachineActionPeripheralCreateWindow)action).getViewportColumn();
+        _builder.append(_viewportColumn, "");
+        _builder.append("|");
+        int _viewportHeight = ((StatemachineActionPeripheralCreateWindow)action).getViewportHeight();
+        _builder.append(_viewportHeight, "");
+        _builder.append("|");
+        int _viewportWidth = ((StatemachineActionPeripheralCreateWindow)action).getViewportWidth();
+        _builder.append(_viewportWidth, "");
+        _builder.append("|");
+        int _windowHeight = ((StatemachineActionPeripheralCreateWindow)action).getWindowHeight();
+        _builder.append(_windowHeight, "");
+        _builder.append("|");
+        int _windowWidth = ((StatemachineActionPeripheralCreateWindow)action).getWindowWidth();
+        _builder.append(_windowWidth, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralCursorType) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"cursorType\", LineDisplayConst.");
+        StatemachineLineDisplayCursorType _cursorType = ((StatemachineActionPeripheralCursorType)action).getCursorType();
+        String _name = _cursorType.getName();
+        _builder.append(_name, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralDestroyWindow) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"destroyWindow\", \"\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralDeviceBrightness) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"deviceBrightness\", ");
+        int _brightness = ((StatemachineActionPeripheralDeviceBrightness)action).getBrightness();
+        _builder.append(_brightness, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralDisplayBitmap) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"displayBitmap\", ");
+        int _bitmapId = ((StatemachineActionPeripheralDisplayBitmap)action).getBitmapId();
+        _builder.append(_bitmapId, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralDisplayText) {
+        _matched=true;
+        boolean _isHasType = ((StatemachineActionPeripheralDisplayText)action).isHasType();
+        if (_isHasType) {
+          StringConcatenation _builder = new StringConcatenation();
+          String _identation = this.identation(level);
+          _builder.append(_identation, "");
+          _builder.append("stateMachine.set(\"displayLine\", ");
+          StatemachineActionFieldConcatenation _text = ((StatemachineActionPeripheralDisplayText)action).getText();
+          JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+          CharSequence _concatenation = this.concatenation(_text, _typeRef);
+          _builder.append(_concatenation, "");
+          _builder.append("+\"|\"+LineDisplayConst.");
+          StatemachineLineDisplayTextType _textType = ((StatemachineActionPeripheralDisplayText)action).getTextType();
+          String _name = _textType.getName();
+          _builder.append(_name, "");
+          _builder.append(");");
+          return _builder.toString();
+        } else {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _identation_1 = this.identation(level);
+          _builder_1.append(_identation_1, "");
+          _builder_1.append("stateMachine.set(\"displayLine\", ");
+          StatemachineActionFieldConcatenation _text_1 = ((StatemachineActionPeripheralDisplayText)action).getText();
+          JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+          CharSequence _concatenation_1 = this.concatenation(_text_1, _typeRef_1);
+          _builder_1.append(_concatenation_1, "");
+          _builder_1.append(");");
+          return _builder_1.toString();
+        }
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralDisplayTextAt) {
+        _matched=true;
+        boolean _isHasType = ((StatemachineActionPeripheralDisplayTextAt)action).isHasType();
+        if (_isHasType) {
+          StringConcatenation _builder = new StringConcatenation();
+          String _identation = this.identation(level);
+          _builder.append(_identation, "");
+          _builder.append("stateMachine.set(\"displayTextAt\", \"");
+          int _row = ((StatemachineActionPeripheralDisplayTextAt)action).getRow();
+          _builder.append(_row, "");
+          _builder.append("|");
+          int _column = ((StatemachineActionPeripheralDisplayTextAt)action).getColumn();
+          _builder.append(_column, "");
+          _builder.append("|\"+");
+          StatemachineActionFieldConcatenation _text = ((StatemachineActionPeripheralDisplayTextAt)action).getText();
+          JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+          CharSequence _concatenation = this.concatenation(_text, _typeRef);
+          _builder.append(_concatenation, "");
+          _builder.append("+\"|\"+LineDisplayConst.");
+          StatemachineLineDisplayTextType _textType = ((StatemachineActionPeripheralDisplayTextAt)action).getTextType();
+          String _name = _textType.getName();
+          _builder.append(_name, "");
+          _builder.append(");");
+          return _builder.toString();
+        } else {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _identation_1 = this.identation(level);
+          _builder_1.append(_identation_1, "");
+          _builder_1.append("stateMachine.set(\"displayTextAt\", \"");
+          int _row_1 = ((StatemachineActionPeripheralDisplayTextAt)action).getRow();
+          _builder_1.append(_row_1, "");
+          _builder_1.append("|");
+          int _column_1 = ((StatemachineActionPeripheralDisplayTextAt)action).getColumn();
+          _builder_1.append(_column_1, "");
+          _builder_1.append("|\"+");
+          StatemachineActionFieldConcatenation _text_1 = ((StatemachineActionPeripheralDisplayTextAt)action).getText();
+          JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+          CharSequence _concatenation_1 = this.concatenation(_text_1, _typeRef_1);
+          _builder_1.append(_concatenation_1, "");
+          _builder_1.append(");");
+          return _builder_1.toString();
+        }
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralInterCharacterWait) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"interCharacterWait\", ");
+        int _wait = ((StatemachineActionPeripheralInterCharacterWait)action).getWait();
+        _builder.append(_wait, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralMarqueeFormat) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"marqueeFormat\", LineDisplayConst.");
+        StatemachineLineDisplayMarqueeFormat _format = ((StatemachineActionPeripheralMarqueeFormat)action).getFormat();
+        String _name = _format.getName();
+        _builder.append(_name, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralMarqueeRepeatWait) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"marqueeRepeatWait\", ");
+        int _wait = ((StatemachineActionPeripheralMarqueeRepeatWait)action).getWait();
+        _builder.append(_wait, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralMarqueeType) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"marqueeType\", LineDisplayConst.");
+        StatemachineLineDisplayMarqueeType _marqueeType = ((StatemachineActionPeripheralMarqueeType)action).getMarqueeType();
+        String _name = _marqueeType.getName();
+        _builder.append(_name, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralMarqueeUnitWait) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"marqueeUnitWait\", ");
+        int _wait = ((StatemachineActionPeripheralMarqueeUnitWait)action).getWait();
+        _builder.append(_wait, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralScroll) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"scroll\", \"\"+LineDisplayConst.");
+        StatemachineLineDisplayScrollTextType _direction = ((StatemachineActionPeripheralScroll)action).getDirection();
+        String _name = _direction.getName();
+        _builder.append(_name, "");
+        _builder.append("+\"|");
+        int _units = ((StatemachineActionPeripheralScroll)action).getUnits();
+        _builder.append(_units, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralOpenDrawer) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"openDrawer\", 0);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintBarcode) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"printBarcode\", \"");
+        String _data = ((StatemachineActionPeripheralPrintBarcode)action).getData();
+        _builder.append(_data, "");
+        _builder.append("|\"+POSPrinterConst.");
+        StatemachinePOSPrinterBarcodeType _barcodeType = ((StatemachineActionPeripheralPrintBarcode)action).getBarcodeType();
+        String _name = _barcodeType.getName();
+        _builder.append(_name, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintBitmap) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"printBitmap\", ");
+        int _bitmapId = ((StatemachineActionPeripheralPrintBitmap)action).getBitmapId();
+        _builder.append(_bitmapId, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintCut) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"printCut\",");
+        StatemachineActionFieldConcatenation _text = ((StatemachineActionPeripheralPrintCut)action).getText();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation = this.concatenation(_text, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintNormal) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"printNormal\", ");
+        StatemachineActionFieldConcatenation _text = ((StatemachineActionPeripheralPrintNormal)action).getText();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation = this.concatenation(_text, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintRegisterBitmap) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"registerBitmap\", \"");
+        int _bitmapId = ((StatemachineActionPeripheralPrintRegisterBitmap)action).getBitmapId();
+        _builder.append(_bitmapId, "");
+        _builder.append("|icons/");
+        String _name = ((StatemachineActionPeripheralPrintRegisterBitmap)action).getName();
+        _builder.append(_name, "");
+        _builder.append(".bmp\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTOpen) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalOpen\", ");
+        StatemachineActionFieldConcatenation _host = ((StatemachineActionPeripheralPTOpen)action).getHost();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation = this.concatenation(_host, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append("+\"|\"+");
+        StatemachineActionFieldConcatenation _port = ((StatemachineActionPeripheralPTOpen)action).getPort();
+        JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(int.class);
+        CharSequence _concatenation_1 = this.concatenation(_port, _typeRef_1);
+        _builder.append(_concatenation_1, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTClose) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalClose\", \"\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTAcknowledge) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalAcknowledge\", \"\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTReversal) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalReversal\", ");
+        StatemachineActionFieldConcatenation _password = ((StatemachineActionPeripheralPTReversal)action).getPassword();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation = this.concatenation(_password, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append("+\"|\"+");
+        StatemachineActionFieldConcatenation _receipt = ((StatemachineActionPeripheralPTReversal)action).getReceipt();
+        JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation_1 = this.concatenation(_receipt, _typeRef_1);
+        _builder.append(_concatenation_1, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTRegistration) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalRegistration\", ");
+        StatemachineActionFieldConcatenation _password = ((StatemachineActionPeripheralPTRegistration)action).getPassword();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+        CharSequence _concatenation = this.concatenation(_password, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append("+\"|");
+        String _configuration = ((StatemachineActionPeripheralPTRegistration)action).getConfiguration();
+        _builder.append(_configuration, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTAuthorization) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"paymentTerminalAuthorization\", ");
+        StatemachineActionFieldConcatenation _amount = ((StatemachineActionPeripheralPTAuthorization)action).getAmount();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Double.class);
+        CharSequence _concatenation = this.concatenation(_amount, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPrintReport) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"printReport\", \"");
+        Report _report = ((StatemachineActionPeripheralPrintReport)action).getReport();
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(_report);
+        _builder.append(_fullyQualifiedName, "");
+        {
+          boolean _isHasFilter = ((StatemachineActionPeripheralPrintReport)action).isHasFilter();
+          if (_isHasFilter) {
+            _builder.append("|");
+            StatemachineStorage _key = ((StatemachineActionPeripheralPrintReport)action).getKey();
+            _builder.append(_key, "");
+          }
+        }
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSet) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"");
+        StatemachineControlFieldAttribute _attribute = ((StatemachineActionFieldSet)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", ");
+        StatemachineActionFieldConcatenation _source = ((StatemachineActionFieldSet)action).getSource();
+        StatemachineControlFieldAttribute _attribute_1 = ((StatemachineActionFieldSet)action).getAttribute();
+        StatemachineFieldType _attributeType = _attribute_1.getAttributeType();
+        StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+        String _literal = _attributeType_1.getLiteral();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(_literal);
+        CharSequence _concatenation = this.concatenation(_source, _typeRef);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldRemove) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.remove(\"");
+        StatemachineControlFieldAttribute _attribute = ((StatemachineActionFieldRemove)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", -1);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldClear) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.clear(\"");
+        StatemachineControlFieldAttribute _attribute = ((StatemachineActionFieldClear)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldKeystroke) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.append(\"");
+        StatemachineControlFieldAttribute _attribute = ((StatemachineActionFieldKeystroke)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", event.getId());");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionItemVisible) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.enable(\"");
+        StatemachineControlVisibility _attribute = ((StatemachineActionItemVisible)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", true);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionItemInvisible) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.enable(\"");
+        StatemachineControlVisibility _attribute = ((StatemachineActionItemInvisible)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", false);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionButtonCaption) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.caption(\"");
+        StatemachineControlButtonAttribute _attribute = ((StatemachineActionButtonCaption)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", \"");
+        StatemachineActionFieldConcatenation _caption = ((StatemachineActionButtonCaption)action).getCaption();
+        _builder.append(_caption, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionButtonImage) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.image(\"");
+        StatemachineControlButtonAttribute _attribute = ((StatemachineActionButtonImage)action).getAttribute();
+        String _name = _attribute.getName();
+        _builder.append(_name, "");
+        _builder.append("\", \"");
+        String _image = ((StatemachineActionButtonImage)action).getImage();
+        _builder.append(_image, "");
+        _builder.append("\");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionDTOFind) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.find(\"");
+        StatemachineControlDTOAttribute _dto = ((StatemachineActionDTOFind)action).getDto();
+        StatemachineDTOType _attributeType = _dto.getAttributeType();
+        LDto _attributeType_1 = _attributeType.getAttributeType();
+        String _name = _attributeType_1.getName();
+        _builder.append(_name, "");
+        _builder.append("\", \"");
+        LDtoInheritedAttribute _attribute = ((StatemachineActionDTOFind)action).getAttribute();
+        LAttribute _inheritedFeature = _attribute.getInheritedFeature();
+        String _name_1 = _inheritedFeature.getName();
+        _builder.append(_name_1, "");
+        _builder.append("\", ");
+        StatemachineActionFieldConcatenation _search = ((StatemachineActionDTOFind)action).getSearch();
+        CharSequence _concatenation = this.concatenation(_search);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineStorage) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.putStorage(\"");
+        String _key = ((StatemachineStorage)action).getKey();
+        _builder.append(_key, "");
+        _builder.append("\",\"");
+        String _attribute = ((StatemachineStorage)action).getAttribute();
+        _builder.append(_attribute, "");
+        _builder.append("\", ");
+        StatemachineActionFieldConcatenation _content = ((StatemachineStorage)action).getContent();
+        CharSequence _concatenation = this.concatenation(_content);
+        _builder.append(_concatenation, "");
+        _builder.append(");");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionScheduler) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _identation = this.identation(level);
+        _builder.append(_identation, "");
+        _builder.append("stateMachine.set(\"");
+        StatemachineControlSchedulerAttribute _scheduler = ((StatemachineActionScheduler)action).getScheduler();
+        String _name = _scheduler.getName();
+        _builder.append(_name, "");
+        _builder.append("Scheduler\", ");
+        StatemachineControlSchedulerAttribute _scheduler_1 = ((StatemachineActionScheduler)action).getScheduler();
+        int _delay = _scheduler_1.getDelay();
+        _builder.append(_delay, "");
+        _builder.append("L);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineOperation) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        String _decodeOperation = this.decodeOperation(((StatemachineOperation)action), level);
+        _builder.append(_decodeOperation, "");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionConditionalTransition) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        StatemachineGuard _guard = ((StatemachineActionConditionalTransition)action).getGuard();
+        CharSequence _decodeGuard = this.decodeGuard(_guard, level);
+        _builder.append(_decodeGuard, "");
+        _builder.newLineIfNotEmpty();
+        {
+          EList<StatemachineAction> _actions = ((StatemachineActionConditionalTransition)action).getActions();
+          for(final StatemachineAction act : _actions) {
+            Object _switchAction = this.switchAction(act, (level + 1));
+            _builder.append(_switchAction, "");
+            _builder.newLineIfNotEmpty();
+          }
+        }
+        String _identation = this.identation((level + 1));
+        _builder.append(_identation, "");
+        _builder.append("return ");
+        StatemachineState _transition = ((StatemachineActionConditionalTransition)action).getTransition();
+        String _name = _transition.getName();
+        _builder.append(_name, "");
+        _builder.append(";");
+        _builder.newLineIfNotEmpty();
+        String _identation_1 = this.identation(level);
+        _builder.append(_identation_1, "");
+        _builder.append("}");
+        return _builder.toString();
+      }
+    }
+    return null;
+  }
+  
+  public CharSequence concatenation(final StatemachineActionFieldConcatenation concatenation) {
+    return this.concatenation(concatenation, null);
+  }
+  
+  public CharSequence concatenation(final StatemachineActionFieldConcatenation concatenation, final JvmTypeReference cast) {
+    StringConcatenation _builder = new StringConcatenation();
+    StatemachineActionFieldSource _first = concatenation.getFirst();
+    String _concatenationDecode = this.concatenationDecode(_first, cast);
+    _builder.append(_concatenationDecode, "");
+    {
+      EList<StatemachineActionFieldSource> _more = concatenation.getMore();
+      for(final StatemachineActionFieldSource element : _more) {
+        _builder.append("+");
+        String _concatenationDecode_1 = this.concatenationDecode(element, cast);
+        _builder.append(_concatenationDecode_1, "");
+      }
+    }
+    return _builder;
+  }
+  
+  public String concatenationDecode(final StatemachineActionFieldSource action, final JvmTypeReference cast) {
+    boolean _matched = false;
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceString) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("\"");
+        String _text = ((StatemachineActionFieldSourceString)action).getText();
+        _builder.append(_text, "");
+        _builder.append("\"");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceNumber) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        Double _value = ((StatemachineActionFieldSourceNumber)action).getValue();
+        _builder.append(_value, "");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceEvaluate) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("stateMachine.");
+        StatemachineEvaluationType _evaluationtype = ((StatemachineActionFieldSourceEvaluate)action).getEvaluationtype();
+        String _literal = _evaluationtype.getLiteral();
+        _builder.append(_literal, "");
+        _builder.append("()");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceEvent) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("event.getId()");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceTranslate) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("stateMachine.getTranslation(\"");
+        String _text = ((StatemachineActionFieldSourceTranslate)action).getText();
+        _builder.append(_text, "");
+        _builder.append("\")");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldGet) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        {
+          boolean _and = false;
+          boolean _and_1 = false;
+          boolean _notEquals = (!Objects.equal(cast, null));
+          if (!_notEquals) {
+            _and_1 = false;
+          } else {
+            String _simpleName = cast.getSimpleName();
+            StatemachineControlFieldAttribute _attribute = ((StatemachineActionFieldGet)action).getAttribute();
+            StatemachineFieldType _attributeType = _attribute.getAttributeType();
+            StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+            String _literal = _attributeType_1.getLiteral();
+            boolean _equals = _simpleName.equals(_literal);
+            boolean _not = (!_equals);
+            _and_1 = _not;
+          }
+          if (!_and_1) {
+            _and = false;
+          } else {
+            boolean _or = false;
+            StatemachineControlFieldAttribute _attribute_1 = ((StatemachineActionFieldGet)action).getAttribute();
+            StatemachineFieldType _attributeType_2 = _attribute_1.getAttributeType();
+            StatemachineInternalType _attributeType_3 = _attributeType_2.getAttributeType();
+            String _literal_1 = _attributeType_3.getLiteral();
+            boolean _equals_1 = _literal_1.equals("String");
+            if (_equals_1) {
+              _or = true;
+            } else {
+              StatemachineControlFieldAttribute _attribute_2 = ((StatemachineActionFieldGet)action).getAttribute();
+              StatemachineFieldType _attributeType_4 = _attribute_2.getAttributeType();
+              StatemachineInternalType _attributeType_5 = _attributeType_4.getAttributeType();
+              String _literal_2 = _attributeType_5.getLiteral();
+              boolean _equals_2 = _literal_2.equals("SuggestText");
+              _or = _equals_2;
+            }
+            _and = _or;
+          }
+          if (_and) {
+            String _simpleName_1 = cast.getSimpleName();
+            _builder.append(_simpleName_1, "");
+            _builder.append(".parse");
+            String _simpleName_2 = cast.getSimpleName();
+            _builder.append(_simpleName_2, "");
+            _builder.append("((String)");
+          }
+        }
+        _builder.append("stateMachine.get(\"");
+        StatemachineControlFieldAttribute _attribute_3 = ((StatemachineActionFieldGet)action).getAttribute();
+        String _name = _attribute_3.getName();
+        _builder.append(_name, "");
+        _builder.append("\")");
+        {
+          boolean _and_2 = false;
+          boolean _and_3 = false;
+          boolean _notEquals_1 = (!Objects.equal(cast, null));
+          if (!_notEquals_1) {
+            _and_3 = false;
+          } else {
+            String _simpleName_3 = cast.getSimpleName();
+            boolean _equals_3 = _simpleName_3.equals("String");
+            _and_3 = _equals_3;
+          }
+          if (!_and_3) {
+            _and_2 = false;
+          } else {
+            StatemachineControlFieldAttribute _attribute_4 = ((StatemachineActionFieldGet)action).getAttribute();
+            StatemachineFieldType _attributeType_6 = _attribute_4.getAttributeType();
+            StatemachineInternalType _attributeType_7 = _attributeType_6.getAttributeType();
+            String _literal_3 = _attributeType_7.getLiteral();
+            boolean _equals_4 = _literal_3.equals("String");
+            boolean _not_1 = (!_equals_4);
+            _and_2 = _not_1;
+          }
+          if (_and_2) {
+            _builder.append(".toString()");
+          }
+        }
+        {
+          boolean _and_4 = false;
+          boolean _and_5 = false;
+          boolean _notEquals_2 = (!Objects.equal(cast, null));
+          if (!_notEquals_2) {
+            _and_5 = false;
+          } else {
+            String _simpleName_4 = cast.getSimpleName();
+            StatemachineControlFieldAttribute _attribute_5 = ((StatemachineActionFieldGet)action).getAttribute();
+            StatemachineFieldType _attributeType_8 = _attribute_5.getAttributeType();
+            StatemachineInternalType _attributeType_9 = _attributeType_8.getAttributeType();
+            String _literal_4 = _attributeType_9.getLiteral();
+            boolean _equals_5 = _simpleName_4.equals(_literal_4);
+            boolean _not_2 = (!_equals_5);
+            _and_5 = _not_2;
+          }
+          if (!_and_5) {
+            _and_4 = false;
+          } else {
+            boolean _or_1 = false;
+            StatemachineControlFieldAttribute _attribute_6 = ((StatemachineActionFieldGet)action).getAttribute();
+            StatemachineFieldType _attributeType_10 = _attribute_6.getAttributeType();
+            StatemachineInternalType _attributeType_11 = _attributeType_10.getAttributeType();
+            String _literal_5 = _attributeType_11.getLiteral();
+            boolean _equals_6 = _literal_5.equals("String");
+            if (_equals_6) {
+              _or_1 = true;
+            } else {
+              StatemachineControlFieldAttribute _attribute_7 = ((StatemachineActionFieldGet)action).getAttribute();
+              StatemachineFieldType _attributeType_12 = _attribute_7.getAttributeType();
+              StatemachineInternalType _attributeType_13 = _attributeType_12.getAttributeType();
+              String _literal_6 = _attributeType_13.getLiteral();
+              boolean _equals_7 = _literal_6.equals("SuggestText");
+              _or_1 = _equals_7;
+            }
+            _and_4 = _or_1;
+          }
+          if (_and_4) {
+            _builder.append(")");
+          }
+        }
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineOperation) {
+        _matched=true;
+        return this.decodeOperation(((StatemachineOperation)action), 0);
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineFunction) {
+        _matched=true;
+        return this.decodeFunction(((StatemachineFunction)action), 0);
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineStorageRetrieve) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        {
+          boolean _notEquals = (!Objects.equal(cast, null));
+          if (_notEquals) {
+            _builder.append("(");
+            String _qualifiedName = cast.getQualifiedName();
+            _builder.append(_qualifiedName, "");
+            _builder.append(")");
+          }
+        }
+        _builder.append("stateMachine.getStorage(\"");
+        String _key = ((StatemachineStorageRetrieve)action).getKey();
+        _builder.append(_key, "");
+        _builder.append("\", \"");
+        String _attribute = ((StatemachineStorageRetrieve)action).getAttribute();
+        _builder.append(_attribute, "");
+        _builder.append("\")");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionFieldSourceDtoAttribute) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("stateMachine.get(\"");
+        StatemachineControlDTOAttribute _dto = ((StatemachineActionFieldSourceDtoAttribute)action).getDto();
+        StatemachineDTOType _attributeType = _dto.getAttributeType();
+        LDto _attributeType_1 = _attributeType.getAttributeType();
+        String _name = _attributeType_1.getName();
+        _builder.append(_name, "");
+        LDtoInheritedAttribute _attribute = ((StatemachineActionFieldSourceDtoAttribute)action).getAttribute();
+        LAttribute _inheritedFeature = _attribute.getInheritedFeature();
+        String _name_1 = _inheritedFeature.getName();
+        String _firstUpper = StringExtensions.toFirstUpper(_name_1);
+        _builder.append(_firstUpper, "");
+        _builder.append("\")");
+        {
+          boolean _and = false;
+          boolean _notEquals = (!Objects.equal(cast, null));
+          if (!_notEquals) {
+            _and = false;
+          } else {
+            String _simpleName = cast.getSimpleName();
+            boolean _equals = _simpleName.equals("String");
+            _and = _equals;
+          }
+          if (_and) {
+            _builder.append(".toString()");
+          }
+        }
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (action instanceof StatemachineActionPeripheralPTResponse) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("stateMachine.get(\"PaymentTerminalResponse\")");
+        return _builder.toString();
+      }
+    }
+    return null;
+  }
+  
+  public String decodeOperation(final StatemachineOperation operation, final int level) {
+    return this.decodeOperation(operation, false, level);
+  }
+  
+  public String decodeOperation(final StatemachineOperation operation, final boolean isIdentity, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _identation = this.identation(level);
+    _builder.append(_identation, "");
+    _builder.append("if(!((boolean)");
+    FunctionLibraryOperation _operation = operation.getOperation();
+    String _name = _operation.getName();
+    StatemachineOperationParameter _first = operation.getFirst();
+    EList<StatemachineOperationParameter> _more = operation.getMore();
+    String _call = this.call(((EObject) operation), _name, StatemachineEnums.Functions.OPERATION, _first, ((StatemachineOperationParameter[])Conversions.unwrapArray(_more, StatemachineOperationParameter.class)), isIdentity);
+    _builder.append(_call, "");
+    _builder.append(")) {");
+    _builder.newLineIfNotEmpty();
+    String _identation_1 = this.identation(level);
+    _builder.append(_identation_1, "");
+    _builder.append("\tNotification.show(\"Operation failed\", \"");
+    FunctionLibraryOperation _operation_1 = operation.getOperation();
+    String _name_1 = _operation_1.getName();
+    _builder.append(_name_1, "");
+    _builder.append("\", Type.ERROR_MESSAGE);");
+    _builder.newLineIfNotEmpty();
+    String _identation_2 = this.identation(level);
+    _builder.append(_identation_2, "");
+    _builder.append("\treturn this;\t");
+    _builder.newLineIfNotEmpty();
+    String _identation_3 = this.identation(level);
+    _builder.append(_identation_3, "");
+    _builder.append("}");
+    return _builder.toString();
+  }
+  
+  public String decodeFunction(final StatemachineFunction function, final int level) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _identation = this.identation(level);
+    _builder.append(_identation, "");
+    FunctionLibraryFunction _function = function.getFunction();
+    String _name = _function.getName();
+    StatemachineOperationParameter _first = function.getFirst();
+    EList<StatemachineOperationParameter> _more = function.getMore();
+    String _call = this.call(((EObject) function), _name, StatemachineEnums.Functions.FUNCTION, _first, ((StatemachineOperationParameter[])Conversions.unwrapArray(_more, StatemachineOperationParameter.class)), false);
+    _builder.append(_call, "");
+    return _builder.toString();
+  }
+  
+  public String call(final EObject parent, final String name, final StatemachineEnums.Functions function, final StatemachineOperationParameter first, final StatemachineOperationParameter[] more, final boolean isIdentity) {
+    Statemachine statemachine = null;
+    EObject eObj = parent;
+    while ((!(eObj instanceof StatemachinePackage))) {
+      {
+        if ((eObj instanceof Statemachine)) {
+          statemachine = ((Statemachine) eObj);
+        }
+        EObject _eContainer = eObj.eContainer();
+        eObj = _eContainer;
+      }
+    }
+    if ((eObj instanceof StatemachinePackage)) {
+      if (function != null) {
+        switch (function) {
+          case GUARD:
+            StringConcatenation _builder = new StringConcatenation();
+            String _name = ((StatemachinePackage)eObj).getName();
+            String _plus = (_name + ".");
+            QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(eObj);
+            String _lastSegment = _fullyQualifiedName.getLastSegment();
+            String _firstUpper = StringExtensions.toFirstUpper(_lastSegment);
+            String _plus_1 = (_plus + _firstUpper);
+            _builder.append(_plus_1, "");
+            _builder.append(this.binderPostfix, "");
+            _builder.append(".getFunctionLibraryService().guard(stateMachine, \"");
+            FunctionLibraryStatemachineGroup _functionGroup = statemachine.getFunctionGroup();
+            QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(_functionGroup);
+            _builder.append(_fullyQualifiedName_1, "");
+            _builder.append("\", \"");
+            _builder.append(name, "");
+            _builder.append("\")");
+            return _builder.toString();
+          case OPERATION:
+            StringConcatenation _builder_1 = new StringConcatenation();
+            String _name_1 = ((StatemachinePackage)eObj).getName();
+            String _plus_2 = (_name_1 + ".");
+            QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(eObj);
+            String _lastSegment_1 = _fullyQualifiedName_2.getLastSegment();
+            String _firstUpper_1 = StringExtensions.toFirstUpper(_lastSegment_1);
+            String _plus_3 = (_plus_2 + _firstUpper_1);
+            _builder_1.append(_plus_3, "");
+            _builder_1.append(this.binderPostfix, "");
+            _builder_1.append(".getFunctionLibraryService().operation(stateMachine, \"");
+            FunctionLibraryStatemachineGroup _functionGroup_1 = statemachine.getFunctionGroup();
+            QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(_functionGroup_1);
+            _builder_1.append(_fullyQualifiedName_3, "");
+            _builder_1.append("\", ");
+            String _processParameters = this.processParameters(name, first, more, isIdentity);
+            _builder_1.append(_processParameters, "");
+            _builder_1.append(")");
+            return _builder_1.toString();
+          case FUNCTION:
+            StringConcatenation _builder_2 = new StringConcatenation();
+            String _name_2 = ((StatemachinePackage)eObj).getName();
+            String _plus_4 = (_name_2 + ".");
+            QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(eObj);
+            String _lastSegment_2 = _fullyQualifiedName_4.getLastSegment();
+            String _firstUpper_2 = StringExtensions.toFirstUpper(_lastSegment_2);
+            String _plus_5 = (_plus_4 + _firstUpper_2);
+            _builder_2.append(_plus_5, "");
+            _builder_2.append(this.binderPostfix, "");
+            _builder_2.append(".getFunctionLibraryService().function(stateMachine, \"");
+            FunctionLibraryStatemachineGroup _functionGroup_2 = statemachine.getFunctionGroup();
+            QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(_functionGroup_2);
+            _builder_2.append(_fullyQualifiedName_5, "");
+            _builder_2.append("\", ");
+            String _processParameters_1 = this.processParameters(name, first, more, isIdentity);
+            _builder_2.append(_processParameters_1, "");
+            _builder_2.append(")");
+            return _builder_2.toString();
+          default:
+            break;
+        }
+      }
+    } else {
+      StringConcatenation _builder_3 = new StringConcatenation();
+      _builder_3.append("/* error: parents not found */");
+      return _builder_3.toString();
+    }
+    return null;
+  }
+  
+  public String processParameters(final String name, final StatemachineOperationParameter first, final StatemachineOperationParameter[] more, final boolean isIdentity) {
+    boolean _equals = Objects.equal(first, null);
+    if (_equals) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("\"");
+      _builder.append(name, "");
+      _builder.append("\"");
+      {
+        if (isIdentity) {
+          _builder.append(", event.getId()");
+        }
+      }
+      return _builder.toString();
+    }
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append("\"");
+    _builder_1.append(name, "");
+    _builder_1.append("\", ");
+    {
+      if (isIdentity) {
+        _builder_1.append("event.getId(), ");
+      }
+    }
+    StatemachineActionFieldConcatenation _source = first.getSource();
+    CharSequence _concatenation = this.concatenation(_source);
+    _builder_1.append(_concatenation, "");
+    String body = _builder_1.toString();
+    boolean _notEquals = (!Objects.equal(more, null));
+    if (_notEquals) {
+      for (final StatemachineOperationParameter para : more) {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append(body, "");
+        _builder_2.append(", ");
+        StatemachineActionFieldConcatenation _source_1 = para.getSource();
+        CharSequence _concatenation_1 = this.concatenation(_source_1);
+        _builder_2.append(_concatenation_1, "");
+        body = _builder_2.toString();
+      }
+    }
+    return body;
+  }
+  
+  public void toBinderFields(final JvmDeclaredType type, final StatemachinePackage datamart) {
+    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(\"servicebinder\")");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(datamart, "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(IFunctionLibraryService.class);
+    JvmField _field_1 = this._jvmTypesBuilder.toField(datamart, "functionLibraryService", _typeRef_1);
+    field = _field_1;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+  }
+  
+  public void toBinderOperations(final JvmDeclaredType type, final StatemachinePackage datamart) {
+    JvmOperation operation = null;
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IFunctionLibraryService.class);
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setStatic(true);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return functionLibraryService;");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(datamart, "getFunctionLibraryService", _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) {
+        JvmAnnotationReference annotationRef = StatemachineDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Reference.class);
+        StatemachineDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
+        StatemachineDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IFunctionLibraryService.class);
+        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "functionLibraryService", _typeRef);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.functionLibraryService = functionLibraryService;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Statemachine FunctionLibraryServiceService bound\");");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(datamart, "bindFunctionLibraryService", _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(Void.TYPE);
+    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = StatemachineDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IFunctionLibraryService.class);
+        JvmFormalParameter _parameter = StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "functionLibraryService", _typeRef);
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.functionLibraryService = null;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Statemachine FunctionLibraryServiceService unbound\");");
+            it.append(_builder);
+          }
+        };
+        StatemachineDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(datamart, "unbindFunctionLibraryService", _typeRef_2, _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+  }
+  
+  public void infer(final EObject statemachinePkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    if (statemachinePkg instanceof StatemachinePackage) {
+      _infer((StatemachinePackage)statemachinePkg, acceptor, isPreIndexingPhase);
+      return;
+    } else if (statemachinePkg != null) {
+      _infer(statemachinePkg, acceptor, isPreIndexingPhase);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(statemachinePkg, acceptor, isPreIndexingPhase).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.java
new file mode 100644
index 0000000..191956e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLModelGenerator.java
@@ -0,0 +1,121 @@
+package org.eclipse.osbp.xtext.statemachine.jvmmodel;
+
+import com.google.common.base.Objects;
+import com.vaadin.ui.Notification;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import javax.inject.Inject;
+import jpos.LineDisplayConst;
+import jpos.POSPrinterConst;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.abstractstatemachine.AbstractStateMachine;
+import org.eclipse.osbp.abstractstatemachine.TaskEventSource;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextFieldEvents;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.eclipse.osbp.ui.api.message.MessageEvent;
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePackage;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmEnumerationLiteral;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.xbase.XExpression;
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
+import org.eclipse.xtext.xbase.compiler.ImportManager;
+import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.joda.time.DateTime;
+import org.osgi.service.useradmin.User;
+
+@SuppressWarnings("all")
+public class StatemachineDSLModelGenerator extends I18NModelGenerator {
+  @Inject
+  @Extension
+  private BasicDslGeneratorUtils _basicDslGeneratorUtils;
+  
+  @Inject
+  @Extension
+  private JvmModelAssociator _jvmModelAssociator;
+  
+  @Inject
+  private XbaseCompiler compiler;
+  
+  public static String pckgName = null;
+  
+  public void generatePckgName(final StatemachinePackage pckg, final IJvmDeclaredTypeAcceptor acceptor) {
+    String _name = pckg.getName();
+    StatemachineDSLModelGenerator.pckgName = _name;
+  }
+  
+  public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
+    super.doGenerate(input, fsa);
+  }
+  
+  public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
+    TreeAppendable _xblockexpression = null;
+    {
+      Resource _eResource = context.eResource();
+      this.setBuilder(_eResource);
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, User.class, ResourceBundle.class, Locale.class, List.class, ITranslator.class, AbstractStateMachine.class, IStateMachine.class, MessageEvent.class, MessageEvent.EventType.class, TaskEventSource.class, LineDisplayConst.class, POSPrinterConst.class, IThemeResourceService.ThemeResourceType.class, YSuggestTextFieldEvents.class, DateTime.class, Notification.class, Notification.Type.class, IDTOService.class);
+      _xblockexpression = super.createAppendable(context, importManager, config);
+    }
+    return _xblockexpression;
+  }
+  
+  public void generateInitialization(final JvmEnumerationLiteral it, final ITreeAppendable appendable, final GeneratorConfig config) {
+    Procedure1<? super ITreeAppendable> _compilationStrategy = this._jvmTypeExtensions.getCompilationStrategy(it);
+    boolean _notEquals = (!Objects.equal(_compilationStrategy, null));
+    if (_notEquals) {
+      appendable.append(" { ");
+      appendable.increaseIndentation();
+      appendable.newLine();
+      Procedure1<? super ITreeAppendable> _compilationStrategy_1 = this._jvmTypeExtensions.getCompilationStrategy(it);
+      _compilationStrategy_1.apply(appendable);
+      appendable.decreaseIndentation();
+      appendable.newLine();
+      appendable.append("}");
+    } else {
+      final XExpression expression = this._jvmModelAssociator.getAssociatedExpression(it);
+      boolean _and = false;
+      boolean _notEquals_1 = (!Objects.equal(expression, null));
+      if (!_notEquals_1) {
+        _and = false;
+      } else {
+        boolean _isGenerateExpressions = config.isGenerateExpressions();
+        _and = _isGenerateExpressions;
+      }
+      if (_and) {
+        boolean _hasErrors = this._errorSafeExtensions.hasErrors(expression);
+        if (_hasErrors) {
+          appendable.append(" /* Skipped initializer because of errors */");
+        } else {
+          appendable.append(" = ");
+          JvmTypeReference _type = it.getType();
+          this.compiler.compileAsJavaExpression(expression, appendable, _type);
+        }
+      }
+    }
+  }
+  
+  public void generateEnumLiteral(final JvmEnumerationLiteral it, final ITreeAppendable appendable, final GeneratorConfig config) {
+    appendable.newLine();
+    this.generateJavaDoc(it, appendable, config);
+    EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+    this.generateAnnotations(_annotations, appendable, true, config);
+    String _simpleName = it.getSimpleName();
+    appendable.append(_simpleName);
+    this.generateInitialization(it, appendable, config);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/.StatemachineDSLScopeProvider.java._trace b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/.StatemachineDSLScopeProvider.java._trace
new file mode 100644
index 0000000..c05bf8c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/.StatemachineDSLScopeProvider.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.java
new file mode 100644
index 0000000..0dbe56d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/scoping/StatemachineDSLScopeProvider.java
@@ -0,0 +1,832 @@
+/**
+ * Copyright (c) 2013, 2016 - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.statemachine.scoping;
+
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+import org.eclipse.osbp.xtext.statemachine.Statemachine;
+import org.eclipse.osbp.xtext.statemachine.StatemachineAction;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionDTOFind;
+import org.eclipse.osbp.xtext.statemachine.StatemachineActionFieldSourceDtoAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControl;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButton;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlButtonAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTO;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlDTOAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlField;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlFieldLayout;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlPeripheral;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlScheduler;
+import org.eclipse.osbp.xtext.statemachine.StatemachineControlSchedulerAttribute;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDSLPackage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineDTOType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineEnums;
+import org.eclipse.osbp.xtext.statemachine.StatemachineFieldType;
+import org.eclipse.osbp.xtext.statemachine.StatemachineInternalType;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceCashDrawer;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDeviceLineDisplay;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePOSPrinter;
+import org.eclipse.osbp.xtext.statemachine.StatemachinePeripheralDevicePT;
+import org.eclipse.osbp.xtext.statemachine.StatemachineState;
+import org.eclipse.osbp.xtext.statemachine.StatemachineStorage;
+import org.eclipse.osbp.xtext.statemachine.StatemachineTrigger;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+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;
+
+@SuppressWarnings("all")
+public class StatemachineDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+  public IScope getScope(final EObject context, final EReference reference) {
+    IScope _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_CONDITIONAL_TRANSITION__GUARD)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.GUARD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_OPERATION__OPERATION)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.OPERATION);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_GUARD__GUARD)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.GUARD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_FUNCTION__FUNCTION)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.FUNCTION);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_STATE__IDENTITY)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.OPERATION);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_STATE__KEYSTROKE)) {
+        _matched=true;
+        return this.getStringFields(context);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_STATE__KEY_OPERATION)) {
+        _matched=true;
+        return this.getFunctionService(context, StatemachineEnums.Functions.OPERATION);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_BLINK_RATE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CLEAR__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CREATE_WINDOW__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_CURSOR_TYPE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DESTROY_WINDOW__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DEVICE_BRIGHTNESS__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_BITMAP__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_DISPLAY_TEXT_AT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_INTER_CHARACTER_WAIT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_FORMAT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_REPEAT_WAIT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_TYPE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_MARQUEE_UNIT_WAIT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_SCROLL__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.LINEDISPLAY);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_OPEN_DRAWER__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.CASHDRAWER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BARCODE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.POSPRINTER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_BITMAP__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.POSPRINTER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_CUT__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.POSPRINTER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_NORMAL__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.POSPRINTER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REGISTER_BITMAP__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.POSPRINTER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_OPEN__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_CLOSE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_ACKNOWLEDGE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REGISTRATION__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_AUTHORIZATION__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_REVERSAL__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PT_RESPONSE__DEVICE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.PAYMENTTERMINAL);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_CAPTION__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.BUTTON);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_BUTTON_IMAGE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.BUTTON);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_GET__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.FIELD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_CLEAR__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.FIELD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_KEYSTROKE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.FIELD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SET__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.FIELD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_REMOVE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.FIELD);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_VISIBLE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.ITEM);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_ITEM_INVISIBLE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.ITEM);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__DTO)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.DTO);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_DTO_FIND__ATTRIBUTE)) {
+        _matched=true;
+        return this.getFindDTOAttributes(context);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__DTO)) {
+        _matched=true;
+        return this.getDTO(context);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_FIELD_SOURCE_DTO_ATTRIBUTE__ATTRIBUTE)) {
+        _matched=true;
+        return this.getDTOAttributes(context);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_SCHEDULER__SCHEDULER)) {
+        _matched=true;
+        return this.getActions(context, StatemachineEnums.Controls.SCHEDULER);
+      }
+    }
+    if (!_matched) {
+      if (Objects.equal(reference, StatemachineDSLPackage.Literals.STATEMACHINE_ACTION_PERIPHERAL_PRINT_REPORT__KEY)) {
+        _matched=true;
+        return this.getStorageKey(context, StatemachineEnums.StorageAccess.KEY);
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.getScope(context, reference);
+    }
+    return _switchResult;
+  }
+  
+  public IScope getStorageKey(final EObject context, final StatemachineEnums.StorageAccess access) {
+    final ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject statemachine = context;
+    while (((!Objects.equal(statemachine, null)) && (!(statemachine instanceof Statemachine)))) {
+      EObject _eContainer = statemachine.eContainer();
+      statemachine = _eContainer;
+    }
+    boolean _and = false;
+    boolean _notEquals = (!Objects.equal(statemachine, null));
+    if (!_notEquals) {
+      _and = false;
+    } else {
+      _and = (statemachine instanceof Statemachine);
+    }
+    if (_and) {
+      EList<StatemachineState> _states = ((Statemachine) statemachine).getStates();
+      final Consumer<StatemachineState> _function = new Consumer<StatemachineState>() {
+        public void accept(final StatemachineState it) {
+          EList<StatemachineTrigger> _triggers = it.getTriggers();
+          final Consumer<StatemachineTrigger> _function = new Consumer<StatemachineTrigger>() {
+            public void accept(final StatemachineTrigger it) {
+              EList<StatemachineAction> _actions = it.getActions();
+              final Consumer<StatemachineAction> _function = new Consumer<StatemachineAction>() {
+                public void accept(final StatemachineAction it) {
+                  if ((it instanceof StatemachineStorage)) {
+                    if (access != null) {
+                      switch (access) {
+                        case KEY:
+                          String _key = ((StatemachineStorage)it).getKey();
+                          IEObjectDescription _create = EObjectDescription.create(_key, it);
+                          result.add(_create);
+                          break;
+                        case ATTRIBUTE:
+                          String _attribute = ((StatemachineStorage)it).getAttribute();
+                          IEObjectDescription _create_1 = EObjectDescription.create(_attribute, it);
+                          result.add(_create_1);
+                          break;
+                        default:
+                          break;
+                      }
+                    }
+                  }
+                }
+              };
+              _actions.forEach(_function);
+            }
+          };
+          _triggers.forEach(_function);
+        }
+      };
+      _states.forEach(_function);
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public IScope getStringFields(final EObject context) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject statemachine = ((EObject) context);
+    while (((!Objects.equal(statemachine, null)) && (!(statemachine instanceof Statemachine)))) {
+      EObject _eContainer = statemachine.eContainer();
+      statemachine = _eContainer;
+    }
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _notEquals = (!Objects.equal(statemachine, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      _and_1 = (statemachine instanceof Statemachine);
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      EList<StatemachineControl> _controls = ((Statemachine) statemachine).getControls();
+      boolean _notEquals_1 = (!Objects.equal(_controls, null));
+      _and = _notEquals_1;
+    }
+    if (_and) {
+      EList<StatemachineControl> _controls_1 = ((Statemachine) statemachine).getControls();
+      for (final StatemachineControl control : _controls_1) {
+        if ((control instanceof StatemachineControlField)) {
+          EList<StatemachineControlFieldAttribute> _fields = ((StatemachineControlField) control).getFields();
+          for (final StatemachineControlFieldAttribute field : _fields) {
+            boolean _or = false;
+            StatemachineFieldType _attributeType = field.getAttributeType();
+            StatemachineInternalType _attributeType_1 = _attributeType.getAttributeType();
+            boolean _equals = Objects.equal(_attributeType_1, StatemachineInternalType.STRING);
+            if (_equals) {
+              _or = true;
+            } else {
+              StatemachineFieldType _attributeType_2 = field.getAttributeType();
+              StatemachineInternalType _attributeType_3 = _attributeType_2.getAttributeType();
+              boolean _equals_1 = Objects.equal(_attributeType_3, StatemachineInternalType.SUGGESTTEXT);
+              _or = _equals_1;
+            }
+            if (_or) {
+              String _name = field.getName();
+              IEObjectDescription _create = EObjectDescription.create(_name, field);
+              result.add(_create);
+            }
+          }
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public IScope getDTOAttributes(final EObject context) {
+    StatemachineActionFieldSourceDtoAttribute dtoFind = ((StatemachineActionFieldSourceDtoAttribute) context);
+    StatemachineControlDTOAttribute _dto = dtoFind.getDto();
+    StatemachineDTOType _attributeType = _dto.getAttributeType();
+    LDto _attributeType_1 = _attributeType.getAttributeType();
+    LDto dto = ((LDto) _attributeType_1);
+    return this.scopeDTOAttributes(dto, context);
+  }
+  
+  public IScope getDTO(final EObject context) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject statemachine = ((EObject) context);
+    while (((!Objects.equal(statemachine, null)) && (!(statemachine instanceof Statemachine)))) {
+      EObject _eContainer = statemachine.eContainer();
+      statemachine = _eContainer;
+    }
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _notEquals = (!Objects.equal(statemachine, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      _and_1 = (statemachine instanceof Statemachine);
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      EList<StatemachineControl> _controls = ((Statemachine) statemachine).getControls();
+      boolean _notEquals_1 = (!Objects.equal(_controls, null));
+      _and = _notEquals_1;
+    }
+    if (_and) {
+      EList<StatemachineControl> _controls_1 = ((Statemachine) statemachine).getControls();
+      for (final StatemachineControl control : _controls_1) {
+        if ((control instanceof StatemachineControlDTO)) {
+          EList<StatemachineControlDTOAttribute> _dtos = ((StatemachineControlDTO)control).getDtos();
+          for (final StatemachineControlDTOAttribute dto : _dtos) {
+            String _name = dto.getName();
+            IEObjectDescription _create = EObjectDescription.create(_name, dto);
+            result.add(_create);
+          }
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public IScope getFindDTOAttributes(final EObject context) {
+    StatemachineActionDTOFind dtoFind = ((StatemachineActionDTOFind) context);
+    StatemachineControlDTOAttribute _dto = dtoFind.getDto();
+    StatemachineDTOType _attributeType = _dto.getAttributeType();
+    LDto _attributeType_1 = _attributeType.getAttributeType();
+    LDto dto = ((LDto) _attributeType_1);
+    return this.scopeDTOAttributes(dto, context);
+  }
+  
+  public IScope scopeDTOAttributes(final LDto dto, final EObject context) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    boolean _notEquals = (!Objects.equal(dto, null));
+    if (_notEquals) {
+      List<? extends LFeature> _allFeatures = dto.getAllFeatures();
+      for (final LFeature f : _allFeatures) {
+        if ((f instanceof LDtoInheritedAttribute)) {
+          LEntityAttribute attr = null;
+          LAttribute _inheritedFeature = ((LDtoInheritedAttribute)f).getInheritedFeature();
+          boolean _eIsProxy = _inheritedFeature.eIsProxy();
+          if (_eIsProxy) {
+            LAttribute _inheritedFeature_1 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+            final URI uri = ((InternalEObject) _inheritedFeature_1).eProxyURI();
+            Resource _eResource = context.eResource();
+            ResourceSet _resourceSet = _eResource.getResourceSet();
+            EObject _eObject = _resourceSet.getEObject(uri, true);
+            attr = ((LEntityAttribute) _eObject);
+          } else {
+            LAttribute _inheritedFeature_2 = ((LDtoInheritedAttribute)f).getInheritedFeature();
+            attr = ((LEntityAttribute) _inheritedFeature_2);
+          }
+          String _name = attr.getName();
+          IEObjectDescription _create = EObjectDescription.create(_name, ((LDtoInheritedAttribute) f));
+          result.add(_create);
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public IScope getActions(final EObject context, final StatemachineEnums.Controls controlType) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject statemachine = ((EObject) context);
+    while (((!Objects.equal(statemachine, null)) && (!(statemachine instanceof Statemachine)))) {
+      EObject _eContainer = statemachine.eContainer();
+      statemachine = _eContainer;
+    }
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _notEquals = (!Objects.equal(statemachine, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      _and_1 = (statemachine instanceof Statemachine);
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      EList<StatemachineControl> _controls = ((Statemachine) statemachine).getControls();
+      boolean _notEquals_1 = (!Objects.equal(_controls, null));
+      _and = _notEquals_1;
+    }
+    if (_and) {
+      EList<StatemachineControl> _controls_1 = ((Statemachine) statemachine).getControls();
+      for (final StatemachineControl control : _controls_1) {
+        {
+          boolean _and_2 = false;
+          boolean _equals = Objects.equal(controlType, StatemachineEnums.Controls.BUTTON);
+          if (!_equals) {
+            _and_2 = false;
+          } else {
+            _and_2 = (control instanceof StatemachineControlButton);
+          }
+          if (_and_2) {
+            EList<StatemachineControlButtonAttribute> _buttons = ((StatemachineControlButton) control).getButtons();
+            for (final StatemachineControlButtonAttribute button : _buttons) {
+              String _name = button.getName();
+              IEObjectDescription _create = EObjectDescription.create(_name, button);
+              result.add(_create);
+            }
+          }
+          boolean _and_3 = false;
+          boolean _equals_1 = Objects.equal(controlType, StatemachineEnums.Controls.SCHEDULER);
+          if (!_equals_1) {
+            _and_3 = false;
+          } else {
+            _and_3 = (control instanceof StatemachineControlScheduler);
+          }
+          if (_and_3) {
+            EList<StatemachineControlSchedulerAttribute> _schedulers = ((StatemachineControlScheduler) control).getSchedulers();
+            for (final StatemachineControlSchedulerAttribute scheduler : _schedulers) {
+              String _name_1 = scheduler.getName();
+              IEObjectDescription _create_1 = EObjectDescription.create(_name_1, scheduler);
+              result.add(_create_1);
+            }
+          }
+          boolean _and_4 = false;
+          boolean _equals_2 = Objects.equal(controlType, StatemachineEnums.Controls.FIELD);
+          if (!_equals_2) {
+            _and_4 = false;
+          } else {
+            _and_4 = (control instanceof StatemachineControlField);
+          }
+          if (_and_4) {
+            EList<StatemachineControlFieldAttribute> _fields = ((StatemachineControlField) control).getFields();
+            for (final StatemachineControlFieldAttribute field : _fields) {
+              String _name_2 = field.getName();
+              IEObjectDescription _create_2 = EObjectDescription.create(_name_2, field);
+              result.add(_create_2);
+            }
+          }
+          boolean _and_5 = false;
+          boolean _equals_3 = Objects.equal(controlType, StatemachineEnums.Controls.ITEM);
+          if (!_equals_3) {
+            _and_5 = false;
+          } else {
+            _and_5 = ((control instanceof StatemachineControlButton) || (control instanceof StatemachineControlField));
+          }
+          if (_and_5) {
+            if ((control instanceof StatemachineControlButton)) {
+              EList<StatemachineControlButtonAttribute> _buttons_1 = ((StatemachineControlButton) control).getButtons();
+              for (final StatemachineControlButtonAttribute button_1 : _buttons_1) {
+                String _name_3 = button_1.getName();
+                IEObjectDescription _create_3 = EObjectDescription.create(_name_3, button_1);
+                result.add(_create_3);
+              }
+              String _name_4 = ((StatemachineControlButton)control).getName();
+              IEObjectDescription _create_4 = EObjectDescription.create(_name_4, control);
+              result.add(_create_4);
+            }
+            if ((control instanceof StatemachineControlField)) {
+              EList<StatemachineControlFieldAttribute> _fields_1 = ((StatemachineControlField) control).getFields();
+              for (final StatemachineControlFieldAttribute field_1 : _fields_1) {
+                String _name_5 = field_1.getName();
+                IEObjectDescription _create_5 = EObjectDescription.create(_name_5, field_1);
+                result.add(_create_5);
+              }
+              EList<StatemachineControlFieldLayout> _layouts = ((StatemachineControlField) control).getLayouts();
+              for (final StatemachineControlFieldLayout layout : _layouts) {
+                String _name_6 = layout.getName();
+                IEObjectDescription _create_6 = EObjectDescription.create(_name_6, layout);
+                result.add(_create_6);
+              }
+            }
+          }
+          boolean _and_6 = false;
+          boolean _equals_4 = Objects.equal(controlType, StatemachineEnums.Controls.DTO);
+          if (!_equals_4) {
+            _and_6 = false;
+          } else {
+            _and_6 = (control instanceof StatemachineControlDTO);
+          }
+          if (_and_6) {
+            EList<StatemachineControlDTOAttribute> _dtos = ((StatemachineControlDTO) control).getDtos();
+            for (final StatemachineControlDTOAttribute dto : _dtos) {
+              String _name_7 = dto.getName();
+              IEObjectDescription _create_7 = EObjectDescription.create(_name_7, dto);
+              result.add(_create_7);
+            }
+          }
+          boolean _and_7 = false;
+          boolean _equals_5 = Objects.equal(controlType, StatemachineEnums.Controls.LINEDISPLAY);
+          if (!_equals_5) {
+            _and_7 = false;
+          } else {
+            _and_7 = (control instanceof StatemachineControlPeripheral);
+          }
+          if (_and_7) {
+            EList<StatemachinePeripheralDeviceLineDisplay> _lineDisplays = ((StatemachineControlPeripheral) control).getLineDisplays();
+            for (final StatemachinePeripheralDeviceLineDisplay element : _lineDisplays) {
+              String _name_8 = element.getName();
+              IEObjectDescription _create_8 = EObjectDescription.create(_name_8, element);
+              result.add(_create_8);
+            }
+          }
+          boolean _and_8 = false;
+          boolean _equals_6 = Objects.equal(controlType, StatemachineEnums.Controls.POSPRINTER);
+          if (!_equals_6) {
+            _and_8 = false;
+          } else {
+            _and_8 = (control instanceof StatemachineControlPeripheral);
+          }
+          if (_and_8) {
+            EList<StatemachinePeripheralDevicePOSPrinter> _posPrinters = ((StatemachineControlPeripheral) control).getPosPrinters();
+            for (final StatemachinePeripheralDevicePOSPrinter element_1 : _posPrinters) {
+              String _name_9 = element_1.getName();
+              IEObjectDescription _create_9 = EObjectDescription.create(_name_9, element_1);
+              result.add(_create_9);
+            }
+          }
+          boolean _and_9 = false;
+          boolean _equals_7 = Objects.equal(controlType, StatemachineEnums.Controls.CASHDRAWER);
+          if (!_equals_7) {
+            _and_9 = false;
+          } else {
+            _and_9 = (control instanceof StatemachineControlPeripheral);
+          }
+          if (_and_9) {
+            EList<StatemachinePeripheralDeviceCashDrawer> _cashDrawers = ((StatemachineControlPeripheral) control).getCashDrawers();
+            for (final StatemachinePeripheralDeviceCashDrawer element_2 : _cashDrawers) {
+              String _name_10 = element_2.getName();
+              IEObjectDescription _create_10 = EObjectDescription.create(_name_10, element_2);
+              result.add(_create_10);
+            }
+          }
+          boolean _and_10 = false;
+          boolean _equals_8 = Objects.equal(controlType, StatemachineEnums.Controls.PAYMENTTERMINAL);
+          if (!_equals_8) {
+            _and_10 = false;
+          } else {
+            _and_10 = (control instanceof StatemachineControlPeripheral);
+          }
+          if (_and_10) {
+            EList<StatemachinePeripheralDevicePT> _paymentTerminals = ((StatemachineControlPeripheral) control).getPaymentTerminals();
+            for (final StatemachinePeripheralDevicePT element_3 : _paymentTerminals) {
+              String _name_11 = element_3.getName();
+              IEObjectDescription _create_11 = EObjectDescription.create(_name_11, element_3);
+              result.add(_create_11);
+            }
+          }
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public IScope getFunctionService(final EObject context, final StatemachineEnums.Functions function) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject statemachine = ((EObject) context);
+    while (((!Objects.equal(statemachine, null)) && (!(statemachine instanceof Statemachine)))) {
+      EObject _eContainer = statemachine.eContainer();
+      statemachine = _eContainer;
+    }
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _notEquals = (!Objects.equal(statemachine, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      _and_1 = (statemachine instanceof Statemachine);
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      FunctionLibraryStatemachineGroup _functionGroup = ((Statemachine) statemachine).getFunctionGroup();
+      boolean _notEquals_1 = (!Objects.equal(_functionGroup, null));
+      _and = _notEquals_1;
+    }
+    if (_and) {
+      if (function != null) {
+        switch (function) {
+          case GUARD:
+            FunctionLibraryStatemachineGroup _functionGroup_1 = ((Statemachine) statemachine).getFunctionGroup();
+            EList<FunctionLibraryGuard> _guards = _functionGroup_1.getGuards();
+            for (final FunctionLibraryGuard element : _guards) {
+              String _name = element.getName();
+              IEObjectDescription _create = EObjectDescription.create(_name, ((FunctionLibraryGuard) element));
+              result.add(_create);
+            }
+            break;
+          case OPERATION:
+            FunctionLibraryStatemachineGroup _functionGroup_2 = ((Statemachine) statemachine).getFunctionGroup();
+            EList<FunctionLibraryOperation> _operations = _functionGroup_2.getOperations();
+            for (final FunctionLibraryOperation element_1 : _operations) {
+              String _name_1 = element_1.getName();
+              IEObjectDescription _create_1 = EObjectDescription.create(_name_1, ((FunctionLibraryOperation) element_1));
+              result.add(_create_1);
+            }
+            break;
+          case FUNCTION:
+            FunctionLibraryStatemachineGroup _functionGroup_3 = ((Statemachine) statemachine).getFunctionGroup();
+            EList<FunctionLibraryFunction> _functions = _functionGroup_3.getFunctions();
+            for (final FunctionLibraryFunction element_2 : _functions) {
+              EList<FunctionLibraryParameter> _params = element_2.getParams();
+              int _size = _params.size();
+              boolean _greaterThan = (_size > 0);
+              if (_greaterThan) {
+                EList<FunctionLibraryParameter> _params_1 = element_2.getParams();
+                FunctionLibraryParameter _get = _params_1.get(0);
+                FunctionLibraryParameter first = ((FunctionLibraryParameter) _get);
+                JvmTypeReference _parameterType = first.getParameterType();
+                String _simpleName = _parameterType.getSimpleName();
+                boolean _equals = "IStateMachine".equals(_simpleName);
+                if (_equals) {
+                  String _name_2 = element_2.getName();
+                  IEObjectDescription _create_2 = EObjectDescription.create(_name_2, ((FunctionLibraryFunction) element_2));
+                  result.add(_create_2);
+                }
+              }
+            }
+            break;
+          default:
+            break;
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/.StatemachineDSLValidator.java._trace b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/.StatemachineDSLValidator.java._trace
new file mode 100644
index 0000000..53a90c5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/.StatemachineDSLValidator.java._trace
Binary files differ
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.java
new file mode 100644
index 0000000..c5d5604
--- /dev/null
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/validation/StatemachineDSLValidator.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package org.eclipse.osbp.xtext.statemachine.validation;
+
+import org.eclipse.osbp.xtext.statemachine.validation.AbstractStatemachineDSLValidator;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("all")
+public class StatemachineDSLValidator extends AbstractStatemachineDSLValidator {
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..7b74c3d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,110 @@
+<?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:
+# 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.statemachine</groupId>
+    <artifactId>org.eclipse.osbp.xtext.statemachine.aggregator</artifactId>
+    <version>0.9.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <url>${osbp.site.repository.url}</url>
+    <scm>
+        <url>${osbp.scm.url}</url>
+        <connection>${osbp.scm.connection}</connection>
+        <developerConnection>${osbp.scm.connection.dev}</developerConnection>
+        <tag>HEAD</tag>
+    </scm>
+    <distributionManagement>
+        <site>
+            <id>gh-pages</id>
+            <name>OSBP GitHub Pages</name>
+            <url>${distribution.site.url}</url>
+        </site>
+    </distributionManagement>
+
+    <properties>
+        
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+    </properties>
+
+    <modules>
+        <module>org.eclipse.osbp.xtext.statemachine</module>
+        <module>org.eclipse.osbp.xtext.statemachine.ui</module>
+        <module>org.eclipse.osbp.xtext.statemachine.tests</module>
+        <module>org.eclipse.osbp.xtext.statemachine.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>
+                        <filters>
+                            <filter>
+                                <type>eclipse-plugin</type>
+                                <id>org.apache.aries.transaction.manager</id>
+                                <restrictTo>
+                                    <!--  use a range that does not exist, we can not mix removeall and versionRange -->
+                                    <versionRange>[0.5.0,0.5.1)</versionRange>
+                                </restrictTo>
+                            </filter>
+                        </filters>
+                        <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>